如何精确过滤日期?

How to filter precisely on date?

我正在使用折线图来显示创建日期(我数据中的一个字段),它工作正常而且我可以 select,但我需要一个更精确的过滤器:仅适用于今天创建的项目,这个周、上周、本月、上个月

是否已经有一个如何完成的示例?我正在为如何应用日期范围过滤器而苦苦挣扎

由于这个问题时不时地出现并且有一个像样的例子会很好,我回到了 NorthSide 的问题并修复了 fiddle。

dc.js - add drop down to select date range

我们将定义第二个时间维度,以便图表受其影响。

在此示例中,我们将天数设置为选项值,然后使用它来计算日期:

<select id="myDropDown">
  <option value="Infinity">All</option>
  <option value='30'>30 days</option>
  <option value='7'>7 days</option>
  <option value="2">Top 2 day</option>
  <option value="5">Top 5 day</option>
</select>

d3.select('#myDropDown').on('change', function(){ 
    var nd = new Date(now);
    nd.setDate(nd.getDate() - +this.value);
    filterDimension.filterRange([nd, now]);
    dc.redrawAll();    
});

http://jsfiddle.net/gordonwoodhull/400wd2nd/16/

有更智能的方法来计算回溯一个月等等,但希望这足以让您入门。

我添加了一个功能可以select当天、本周或 当前月份:

  d3.select('#date_select').on('change', function(){ 
    var nd = new Date(), now = new Date();
    switch (this.value) {
      case "today":
        nd = d3.time.day(now);
        break;
      case "week":
        nd = d3.time.monday(now);
        break;
      case "month":
        nd = d3.time.month(now);
        break;
      default:
        nd.setDate(nd.getDate() - +this.value);
    }
    dim.filterAll();
    dim.filterRange([nd, now]);
    //did not work graph.replaceFilter(dc.RangedFilter(nd, now));
    graph.redrawGroup();
  });

而 html 是:

<select id="date_select">
  <option value="Infinity">All</option>
  <option value="today">Today</option>
  <option value='1'>last 24 hours</option>
  <option value="week">This week</option>
  <option value="month">This month</option>
  <option value='30'>last 30 days</option>
  <option value='90'>last 90 days</option>
</select>