我正在使用moment.js,并希望创建一个数组,其中包含当前时间间隔为15分钟的所有时间。例如:
当前时间是下午1:35。下一次是下午1:45,然后是2:00,2:15,2:30,2:45等,直到某一点为止。
我真的不知道该如何做到这一点。有人能指出我正确的方向吗?
答案 0 :(得分:3)
试试这个:
function calculate(endTime) {
var timeStops = [];
var startTime = moment().add('m', 15 - moment().minute() % 15);
while(startTime <= endTime){
timeStops.push(new moment(startTime));
startTime.add('m', 15);
}
return timeStops;
}
用法:
calculate(moment().add('h', 1));
这将返回每个小时的时间间隔(就像你说的那样)h:15,h:30,h:45,h + 1:00 ......它还包含秒数,所以你可以将秒数设置为0因为我不确定你是否需要它们。
答案 1 :(得分:1)
我对momentjs
并不熟悉,但在纯Javascript中这相对容易。要获得最接近的15分钟,您可以use this solution here。然后,如果你把它放在日期变量中,你可以根据需要多加15分钟!因此得到的Javascript是:
var d = new Date();
var result = "";
for (var idx = 0; idx < 3; idx++)
{
var m = (((d.getMinutes() + 7.5)/15 | 0) * 15) % 60;
var h = ((((d.getMinutes()/105) + .5) | 0) + d.getHours()) % 24;
d = new Date(d.getYear(), d.getMonth(), d.getDay(), h, m, 0, 0);
if (idx > 0) result += ", ";
result += ("0" + h).slice(-2) + ":" + ("0" + m).slice(-2);
d = addMinutes(d, 15);
}
备注 - 我只是随意添加了15分钟3次。如果需要不同的间隔数,您可以计算所需时间与现在之间的时间差。另请注意,如果几乎是午夜,我不确切知道这会做什么,尽管这很容易测试和编码。
祝你好运!