Я могу получить день нет через текущую дату вот так, это даст мне текущий результат
const dateObject = new Date()
console.info(dateObject.getDay())Но когда я пытаюсь указать конкретную дату, я не получаю фактического ответа.
const dateObject = new Date(2018, 8, 5)
console.info(dateObject.getDay())I expect 0 , as it's sunday of the week, but I got 3.
В чем моя вина или недоразумение? Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Параметр monthIndex в конструкторе Date отсчитывается от нуля, поэтому 8 - это сентябрь, а не август. getDay правильно сообщает, что пятое сентября - среда.
Подробнее см. MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Parameters
С датами JS есть достаточно причудливых странностей, поэтому я просто использую MomentJS всякий раз, когда имею дело со значениями даты / времени.
В new Date(2018, 8, 5) месяц начинается с 0, а не с 1. Следовательно, в вашем случае это не August, а September.
Вы ошиблись с индексом месяца. Месяц обычно начинается с индекса 0.
January = 0
February = 1
March = 2
April = 3
...
...
...
...
Таким образом, порядковый номер месяца августа равен 7.
Ваш ответ будет таким:
const dateObject = new Date(2018, 7, 5)
console.info(dateObject.getDay())Спасибо за это оформление :)
Почему сейчас воскресенье? Дата, которую вы указываете, находится в сентябрь, потому что тип конструктора Date, который вы использовали, ожидаемые месяцы, которые начинаются с 0 (есть много ошибок при использовании Date. Поэтому вы обычно не используете Date непосредственно для календарных «математических расчетов»). Если вы хотели 5 августа 2018 года, используйте
Date("2018-08-05")илиDate(2018,7,5)