2014-07-02 3 views
2

Я использую moment.js и хотел бы создать массив, содержащий все время с интервалом в 15 минут с текущего момента. Так, например:Получите время с шагом 15 минут до определенного времени

Текущее время: 13:35. В следующий раз будет 13:45, затем 2:00, 2:15, 2:30, 2:45 и т. Д. До определенного момента.

Я действительно не уверен, как это сделать. Кто-нибудь сможет указать мне в правильном направлении?

ответ

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); 
} 

SEE THIS IN A FIDDLE

Примечания - Я просто добавил 15 минут 3 раза произвольно. Вы можете рассчитать разницу между временем, которое вы хотите, и теперь, если вам нужно другое количество интервалов. Также обратите внимание, что я не знаю точно, что это будет делать, если будет почти полночь, хотя это будет достаточно легко проверить и скопировать.

Удачи!

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)); 

Это будет возвращать временные интервалы каждые четверть часа (как вы сказали) ч: 15, ч: 30, ч: 45, h + 1: 00 ... Он также содержит секунды, поэтому вы можете установить секунды на 0, так как я не был уверен, нужны они вам или нет.

You also can see working example on FIDDLE

+0

Обратите внимание, со времени написания момент API изменился так, что единица времени задается после суммы. startTime.add (15, m); – nclord

Смежные вопросы