问题描述
这是我的解决方案。请记住,从纪元开始,天,周和月相对于原点:
eventsArray = [ {id: 1, date: 1387271989749 }, {id:2, date: 1387271989760} ];
byday={};
byweek={};
bymonth={};
function groupday(value, index, array)
{
d = new Date(value['date']);
d = Math.floor(d.getTime()/(1000*60*60*24));
byday[d]=byday[d]||[];
byday[d].push(value);
}
function groupweek(value, index, array)
{
d = new Date(value['date']);
d = Math.floor(d.getTime()/(1000*60*60*24*7));
byweek[d]=byweek[d]||[];
byweek[d].push(value);
}
function groupmonth(value, index, array)
{
d = new Date(value['date']);
d = (d.getFullYear()-1970)*12 + d.getMonth();
bymonth[d]=bymonth[d]||[];
bymonth[d].push(value);
}
eventsArray.map(groupday);
eventsArray.map(groupweek);
eventsArray.map(groupmonth);
解决方法
在nodejs应用程序中,我有一组事件对象,其格式如下:
eventsArray = [ {id: 1,date: 1387271989749 },{id:2,date: 1387271989760},... ]
eventsArray具有n个元素的可变长度,并且假设我选择时间参考为巴黎时间,我希望能够按天,周或月对元素进行分组:
groupedByDay = {
2012: { ... },2013: {
dayN : [{id: a0,date: b0},{id: a1,date: b1},{id: a2,date: b2 }],dayN+1: [{id: a3,date: b3},{id: a4,date: b4},{id: a5,date: b5 }],...
},2014: { ... }
}
groupedByWeek = {
2012: { ... }
2013: {
weekN: [{id: a0,weekN+1: [{id: a3,date: b3}],....
},2014: { ... }
}
groupedByMonth = {
2012: { ... },2013: {
monthN: [ {id: a0,date: b0 },b1},b2},{id: a3,b3 }],monthN+1: [ {id: a4,date: b4 },b5},{id: a6,b6}],2014: { ... }
}
我对操纵unix时间戳经验很少,我想知道如何做到这一点,或者是否有npm模块可以简化此过程。