【问题标题】:Group by Week using Angular, Underscore and Moment js使用 Angular、Underscore 和 Moment js 按周分组
【发布时间】:2016-07-24 14:44:17
【问题描述】:

请帮忙。我正在尝试使用下划线和时刻按周对我的点击统计信息进行分组。

代码如下:

var groupedByWeekFbCompleted = _.groupBy($scope.facebookObjects, function(item) {
    return moment(item.timeclicked,"YYYY-MM-DD").isoWeek();
});

这是它给我的图表的屏幕截图

当我将 groupedByWeekFbCompleted 打印到控制台时,这就是我得到的

数据来自像这样格式化的数据库

2016-06-18 14:03:56

我不知道 24、26、27、28 和 29 代表什么。我希望将一周的第一天显示为标签,然后按该周分组

【问题讨论】:

    标签: javascript angularjs underscore.js momentjs


    【解决方案1】:

    如果您将获取该日期字符串并使用 moment 解析它,您将得到类似

    moment("2016-11-08 14:03:56", "YYYY-MM-DD HH:mm:ss").isoWeek()
    // 45
    

    24、26、27、28 和 29 是工作日,值是该周内的日期数组

    编辑

    要在标签上显示日期字符串,您可以使用 .format 方法解析从 moment 函数获得的时间戳,并提供与您使用的相同格式,如下所示:

    moment("2016-11-08 14:03:56", "YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") 
    // output: "2016-11-08 14:03:56"
    

    【讨论】:

    • 如果我在 console.log 中为“24”打开对象,我会得到 1 个对象,它的日期时间是:2016-06-18 14:03:56。 '2016-06-18 14:03:56' 是如何产生 24 的?
    • '2016-06-18 14:03:56' 发生在一年中的第 24 周 (isoWeek),如果您运行 moment("2016-01-07 14:03:56", "YYYY-MM-DD HH:mm:ss").week(),它将给出 25。您的函数返回一个数字,_.groupBy 将您的日期分组这些数字
    • 啊,这更有意义。您知道将该数字转换为我的标签的实际日期的最佳方法吗?
    • 您可以使用.format 并提供该格式,例如moment("2016-11-08 14:03:56", "YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") 这将为您提供此字符串"2016-11-08 14:03:56"
    • 而且你不需要使用周数,它只是一个属性名称,格式化数组中的日期
    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2014-09-22
    • 2014-04-04
    • 2020-07-23
    • 2016-04-21
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多