【问题标题】:How to filter in crossfilter by current date and yesterday's date?如何按当前日期和昨天的日期过滤交叉过滤器?
【发布时间】:2018-06-11 11:42:12
【问题描述】:

我想在 crossfilter 中查询以过滤今天日期的所有数据。

示例:我有这个查询:

var countPerDim2 = Dim2.filterExact("1.1.2018").group().reduceSum();

所以 crossfilter 将过滤 1.1.2018 的数据。

但我希望 crossfilter 自动获取当前日期。 我的原因是我想画两个图表来比较它们。 喜欢:

图表 1 按日期 1.1.2018 和图表 2 按日期 31.12.17

我怎样才能得到昨天日期的过滤器?是否有类似datenow() 的函数用于当天,或者datenow(-1) 用于昨天的日期?

谢谢你,新年快乐!

【问题讨论】:

    标签: dc.js crossfilter


    【解决方案1】:

    今天和昨天

    为了回答您的直接问题,JavaScript 的 new Date() 将返回当前时间和日期作为 JavaScript Date 对象。然后您只需要将日期对象转换为字符串以匹配您的日期格式。

    您可以使用d3.time.format 来生成这些字符串。看起来你想要类似的东西

    d3.time.format('%-d.%-m.%Y')
    

    (或者可能与 md 颠倒 - 从您的示例中不清楚是月还是日先出现)

    昨天有点像

    var date = new Date();
    date.setDate(date.getDate()-1);
    

    有关详细信息,请参阅JavaScript Date documentation

    比较两天

    但是,我认为您会遇到一个更根本的问题,即交叉过滤器没有多个过滤器的概念,因此很难在并排图表中将一个日期与另一个日期进行比较。

    在我的脑海中,我能想到的最好的事情就是使用假组“冻结”一个组:

    function freeze_group(group) {
        var _all = group.all().slice();
        return {
            all: function() {
                return _all;
            }
        };
    }
    

    您将应用一个日期过滤器,然后调用

    chart.group(freeze_group(group));
    

    在图表上你想有那个日期。现在过滤器更改时它不会更改,您可以将其他日期过滤器应用于其他图表。

    【讨论】:

    • 非常感谢戈登!
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多