【发布时间】:2014-07-02 18:21:41
【问题描述】:
我正在使用 moment.js 并希望创建一个数组,其中包含从当前时间开始以 15 分钟为间隔的所有时间。比如:
当前时间是下午 1:35。下一次是下午 1:45,然后是 2:00、2:15、2:30、2:45 等,直到某个时间点。
我真的不知道该怎么做。有人能指出我正确的方向吗?
【问题讨论】:
标签: javascript momentjs
我正在使用 moment.js 并希望创建一个数组,其中包含从当前时间开始以 15 分钟为间隔的所有时间。比如:
当前时间是下午 1:35。下一次是下午 1:45,然后是 2:00、2:15、2:30、2:45 等,直到某个时间点。
我真的不知道该怎么做。有人能指出我正确的方向吗?
【问题讨论】:
标签: javascript momentjs
试试这个:
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 ,因为我不确定你是否需要它们。
【讨论】:
我对@987654323@ 不太熟悉,但这在纯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);
}
注意事项 - 我只是随意加了 3 次 15 分钟。如果您需要不同数量的间隔,您可以计算所需时间与现在之间的差异。另请注意,如果几乎是午夜,我不知道这会做什么,尽管这很容易测试和编码。
祝你好运!
【讨论】: