Как вы устанавливаете interval при циклическом просмотре дат?

#javascript

#javascript

Вопрос:

У меня есть массив дат, которые я хочу просмотреть, но хочу подождать определенное время в конце каждой даты. Я не могу понять, как это сделать с помощью setInterval. Вот мой код:

 var date = new Date(2014, 1, 1);
var i = setInterval(function(){
    // do something

    date  ;
    if(date === new Date(2014, 6, 19)) {
        clearInterval(i);
    }
}, 200);
 

Мой массив как таковой:

 [new Date(2014, 6, 18), 'US', 1500],
[new Date(2014, 6, 18), 'CA', 1000],
[new Date(2014, 6, 19), 'US', 1800],
[new Date(2014, 6, 19), 'CA', 1200],
[new Date(2014, 6, 20), 'US', 2000],
[new Date(2014, 6, 20), 'CA', 1500],
 

…и т.д…

Как мне это сделать?

Комментарии:

1. Что date предполагается делать? Добавить день?

2. дата === новая дата всегда будет false, несмотря ни на что

3. Да, я хотел бы добавить день. Как бы я это сделал?

4. Вы говорите, что у вас есть «массив дат», но вы не включаете этот массив в свой приведенный выше код.

5. @Coby — Я не думаю, что он имел в виду массив дат, я думаю, он имел в виду последовательность дат.

Ответ №1:

Чтобы «увеличить на один день», сделайте это:

 date.setDate(date.getDate() 1);
 

Это автоматически перенесется на следующий месяц.

cf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate

Также, как @JonathanLonowski говорит в комментариях (косвенно), внесите это изменение:

 if(date == new Date(2014, 6, 19)) {
 

или

 if(date.getTime() === (new Date(2014, 6, 19)).getTime()) {
 

Тогда вы должны быть GTG

Комментарии:

1. @user1748712 Почему бы и нет?

2. @Hogan Это устраняет одну проблему, но оставляет === проблему. 2 разных объекта, включая Date s, не могут быть равными независимо от любых значений, которые они могут содержать или представлять.

3. Использование >= должно сравнивать их по их значениям и учитывать любые возможные различия в часах и т. Д.

4. если вы пытаетесь сравнить день, месяц и год, сравните эти три значения. В противном случае вам также придется сравнивать время, поскольку преобразование даты в число преобразует ее во временную метку.