Получить номер дня с определенной даты

1

Я могу получить день нет через текущую дату, как это, он дает мне текущий результат

const dateObject = new Date()
console.log(dateObject.getDay())

Но когда я пытаюсь установить дату определенного времени, я не получаю фактического ответа

const dateObject = new Date(2018, 8, 5)
console.log(dateObject.getDay())

Я ожидаю 0, как это было в воскресенье, но у меня 3.

В чем моя вина или непонимание? Спасибо

  • 0
    Почему это будет воскресенье? Дата, которую вы указываете, - сентябрь, потому что тип конструктора Date, который вы использовали, предполагал, что месяцы начинаются с 0 (при использовании Date существует множество ошибок, поэтому вы, как правило, не используете Date непосредственно для календарных «математических операций»). Если вы хотели 5 августа 2018 года, используйте Date("2018-08-05") или Date(2018,7,5)
Теги:
arrays
date

3 ответа

1
Лучший ответ

Вы ошибаетесь с индексом месяца. Месяц начинается с нуля.

January = 0
February = 1
March = 2
April = 3
...
...
...
...

Таким образом, индекс августовского месяца равен 7.

Вы ответите так:

const dateObject = new Date(2018, 7, 5)
console.log(dateObject.getDay())
  • 0
    Спасибо за это оформление :)
4

Параметр monthIndex в конструкторе Date с нулевым значением, поэтому 8 - сентябрь, а не август. getDay затем правильно сообщает вам, что пятое сентября - среда.

Подробнее см. MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Parameters

Есть достаточно странных странностей с датами JS, которые я использую только MomentJS, когда я имею дело с датами/временем.

1

В new Date(2018, 8, 5) месяц начинается с 0 а не 1. Следовательно, в вашем случае это не August а September.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню