如何在JavaScript中按小时/ 6小时/天/周/月/年对日期对象进行分组

贾加德什·戈文达拉杰

我有10年的记录。因此API将返回数组,我需要根据日期时间戳对数组进行分组。用户可以选择分组选项,例如

  • 小时
  • 6小时(每天)

资料范例

[{
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.18809978382007495
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.42347719862654404
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.365386421616013
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.49364744650351033
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.31133576985952016
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.5509062071104307
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.5556739085429424
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.6668348570127745
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.4908101365372941
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.6042127351503115
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.3725497529313371
}, {
  "x": "2019-02-05T14:28:45.540Z",
  "y": 0.29687095332790064
}, {
  "x": "2018-02-07T11:19:19.034Z",
  "y": 0
}]

是否有任何通用解决方案可以按小时/天/周/月/年分组

示例输出我想要的。

一个小时

{
 "OCT 2th 2012 6AM": [
    "2012-10-02 06:00:00",
    "2012-10-10 06:03:51"
  ],
  "NOV 11th 2012 AM": [
    "2012-11-11 09:07:21",
    "2012-11-10 09:03:51"
  ],
  "OCT 6th 2013 2PM": [
    "2013-10-07 02:07:02"
  ],
}

每6小时

{
 "OCT 6th 2012 first 6 hours": [
    "2012-10-11 06:00:00",
  ],
 "OCT 6th 2012 second 6 hours": [
    "2012-10-10 06:03:51"
  ],
  "NOV 6th 2012 AM": [
    "2012-11-11 09:07:21",
    "2012-111-10 09:03:51"
  ],
  "OCT 6th 2013 2PM": [
    "2013-10-07 02:07:02"
  ],
}

一天

{
 "OCT 2th 2012": [
    "2012-10-2 06:00:00",
  ],
 "OCT 10th  2012": [
    "2012-10-10 06:03:51"
  ],
  "NOV 11th 2012": [
    "2012-11-11 09:07:21",
    "2012-11-10 09:03:51"
  ],
  "OCT 7th 2013": [
    "2013-10-07 02:07:02"
  ],
}

。一周

{
 "OCT 2012 week number": [
    "2012-10-2 06:00:00",
  ],
 "OCT 2012 week number": [
    "2012-10-10 06:03:51"
  ],

}

一个月

{
 "OCT 2012 ": [
    "2012-10-2 06:00:00",
  ],
 "NOV 2012": [
    "2012-11-10 06:03:51"
  ],

}
HMR

您可以通过以下方式进行操作吗?

const data = [{"x":"2019-02-05T14:28:45.540Z","y":0.18809978382007495},{"x":"2019-02-05T14:28:45.540Z","y":0.42347719862654404},{"x":"2019-02-05T14:28:45.540Z","y":0.365386421616013},{"x":"2019-02-05T14:28:45.540Z","y":0.49364744650351033},{"x":"2019-02-05T14:28:45.540Z","y":0.31133576985952016},{"x":"2019-02-05T14:28:45.540Z","y":0.5509062071104307},{"x":"2019-02-05T14:28:45.540Z","y":0.5556739085429424},{"x":"2019-02-05T14:28:45.540Z","y":0.6668348570127745},{"x":"2019-02-05T14:28:45.540Z","y":0.4908101365372941},{"x":"2019-02-05T14:28:45.540Z","y":0.6042127351503115},{"x":"2019-02-05T14:28:45.540Z","y":0.3725497529313371},{"x":"2019-02-05T14:28:45.540Z","y":0.29687095332790064},{"x":"2018-02-07T11:19:19.034Z","y":0}];

const groups = (() => {
    const byDay = (item) => moment(item.x).format('MMM DD YYYY'),
        forHour = (item) => byDay(item) + ' ' + moment(item.x).format('hh a'),
        by6Hour = (item) => {
            const m = moment(item.x);
            return byDay(item) + ' ' + ['first', 'second', 'third', 'fourth'][Number(m.format('k')) % 6] + ' 6 hours';
        },
        forMonth = (item) => moment(item.x).format('MMM YYYY'),
        forWeek = (item) => forMonth(item) + ' ' + moment(item.x).format('ww');
    return {
        byDay,
        forHour,
        by6Hour,
        forMonth,
        forWeek,
    };
})();

const currentGroup = 'forWeek';
console.log(_.groupBy(data, groups[currentGroup]));
<script src="https://lodash.com/vendor/cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
<script src="https://momentjs.com/static/js/global.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按小时对日期时间进行分组

如何在datetime SQL列中按日期和这些日期的8小时间隔进行分组和计数?

如何在数据透视表中按天和月对以小时为单位的列进行分组?

如何在MySQL中按小时,平均3小时,6小时9小时和12小时平均查找温度值的平均值?

如何在熊猫多索引中按小时分组

如何在 KDB+ Q 中按小时分组?

如何在Google Bigquery中按小时分组

如何在MongoDB中按季度对日期进行分组

如何在POSTGRESQL中按小时分组并把丢失的小时数设为0

如何在JavaScript中减去小时?

按天以小时为单位对日期时间列进行分组

无法按小时或转储结果对日期时间进行分组 Apache Pig

当有多个时间戳时,如何在mysql中按一天中的小时对数据进行分组?

使用Python,如何按小时对Dataframe中的列进行分组?

如何在Javascript中减去对象内的小时数

如何在SQL Server中按小时获取小时数据(特定于分钟)

如何在熊猫时间序列中按日期对日期进行分组?

您如何在solr中按日期对日期进行分组?

如何按年然后按月对日期列表进行分组?

如何在带有“时间”字段的PostgreSQL中按小时分组?

如何按小时对 DataFrame 值进行分组?

如何在SAS中按十年对日期进行分类

以小时为单位对日期时间进行分组依据(忽略星期几)

如何在 JavaScript 中获取 24 小时的剩余时间

如何在SQLite中的季度中对日期进行分组

如何根据日期对日期进行分组?

如何在python中按月对日期进行分组

如何在python中减去3小时的日期时间?

按日期分组-月-日小时和时间查询