#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. если вы пытаетесь сравнить день, месяц и год, сравните эти три значения. В противном случае вам также придется сравнивать время, поскольку преобразование даты в число преобразует ее во временную метку.