2016-01-28 2 views
2

У меня есть две даты начала и окончанияраз перерыв в 30 минут куски

"start" : "Wed Jan 27 2016 21:00:00 GMT-0500", 
"end" : "Thu Jan 27 2016 23:30:00 GMT-0500" 

Я хочу разделить это время на куски, как следовать

"start" : "Wed Jan 27 2016 21:00:00 GMT-0500", 
"end" : "Thu Jan 27 2016 21:30:00 GMT-0500" 
---------------------------------------------- 
"start" : "Wed Jan 27 2016 21:30:00 GMT-0500", 
"end" : "Thu Jan 27 2016 22:00:00 GMT-0500" 
---------------------------------------------- 
"start" : "Wed Jan 27 2016 22:00:00 GMT-0500", 
"end" : "Thu Jan 27 2016 22:30:00 GMT-0500" 
---------------------------------------------- 
"start" : "Wed Jan 27 2016 22:30:00 GMT-0500", 
"end" : "Thu Jan 27 2016 23:00:00 GMT-0500" 
---------------------------------------------- 
"start" : "Wed Jan 27 2016 23:00:00 GMT-0500", 
"end" : "Thu Jan 27 2016 23:30:00 GMT-0500" 

Есть в любом случае сделать это с помощью moment.js или javascript?

+0

Ну, не строго не зная часовой пояс, так как в середине интервала может быть изменение смещения по времени. –

+0

@JoachimIsaksson, я знаю часовой пояс, откуда идет дата, скажем, это «Америка/Новый_Your», есть ли способ сделать это, если я знаю часовой пояс? – Sasikanth

+0

@JoachimIsaksson и у меня есть добавленная временная библиотека часовых поясов – Sasikanth

ответ

2

Используя момент-часовой пояс (если вы added the timezone), это будет укажите интервалы времени в console.log;

var start = moment.tz('2016-01-27 21:00', 'America/New_York'); 
var end = moment.tz('2016-01-27 23:30', 'America/New_York'); 

while(start < end) { 
    console.log('Start: ' + start.format()); 
    start = start.add(30, 'minutes') 
    console.log('End: ' + start.format()); 
    console.log(); 
} 

Start: 2016-01-27T21:00:00-05:00 
End: 2016-01-27T21:30:00-05:00 

Start: 2016-01-27T21:30:00-05:00 
End: 2016-01-27T22:00:00-05:00 

Start: 2016-01-27T22:00:00-05:00 
End: 2016-01-27T22:30:00-05:00 

Start: 2016-01-27T22:30:00-05:00 
End: 2016-01-27T23:00:00-05:00 

Start: 2016-01-27T23:00:00-05:00 
End: 2016-01-27T23:30:00-05:00 
+0

Если я сохраню время в UTC, то мне не нужно делать какие-либо из этих конверсий правильно? – Sasikanth

1
var startTime = new Date(start).getTime(); 
var endTime = new Date(end).getTime(); 

var duration = 1000 * 60 * 30; 
var times = [] ; 
var arr_len = (startTime - endTime)/duration; 

for(i=0; i< arr_len; i++){ 
    times.push(new Date(startTime + duration)); 
} 

Тогда вы получите эти куски

+0

Спасибо за ответ, но здесь время начала и окончания не статично, так как мы можем найти здесь количество кусков? – Sasikanth

+0

@Sasikanth, что вы имели в виду, начало и конец не статичны? Я прикрепил изображение, в котором я запускаю эти коды в консоли. – jilykate

+0

Я имею в виду, как мы можем выбрать номер '5', что, если бы у меня было время с 1 до 5 утра, тогда я получу только первые 5 номеров 30 минут, но в этом случае я хочу 8 комбайнов – Sasikanth

2

Мы можем разбить время на куски, как это:

var time = { 
 
    "start": "Wed Jan 27 2016 21:00:00 GMT-0500", 
 
    "end": "Thu Jan 27 2016 23:30:00 GMT-0500" 
 
}; 
 

 

 
var startTime = new Date(time.start).getTime(); 
 
var endTime = new Date(time.end).getTime(); 
 

 
var diff = endTime - startTime; 
 

 
var chunks = []; 
 
var hold = startTime; 
 
var threshold = (60 * 30 * 1000); //30minutes 
 
for (var i = (startTime + threshold); i <= endTime; i += (threshold)) { 
 
    var newEndTime = new Date(i); 
 
    chunks.push({ 
 
    start: new Date(hold), 
 
    end: newEndTime 
 
    }); 
 
    hold = newEndTime; 
 
} 
 
console.log(chunks)

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