Получить первый день месяца вернет правильную дату только по тревоге () - PullRequest
4 голосов
/ 27 сентября 2019

Привет, ребята. Я в замешательстве, пытаясь узнать первый день месяца, и, пытаясь предупредить первый день, показывает следующее сообщение:

Sun Sep 01 2019 00:00:00 GMT+0100 (BST), но на консоли.log () вот так 2019-08-31T23:00:00.000Z

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

var dateD = new Date(), y = dateD.getFullYear(), m = dateD.getMonth();
var firstDay = new Date(y, m, 1);

alert(firstDay) // Sun Sep 01 2019 00:00:00 GMT+0100 (BST)
console.log(firstDay) // 2019-08-31T23:00:00.000Z

Ответы [ 2 ]

6 голосов
/ 27 сентября 2019

То, что вы видите в предупреждении, это время в местном часовом поясе.Ваш местный часовой пояс - BST (британское летнее время).

То, что вы видите на консоли, - это та же дата / время в UTC.Вы можете видеть это из-за Z в строке.Z означает, что это UTC.

Итак, обе строки фактически представляют одну и ту же дату / время, только в разных часовых поясах.И они представляют первый день месяца в вашем местном часовом поясе (BST).


Когда вы используете console.log(firstDay), объект Date firstDay отправляется на консоль.И среда, которая отображает значение в консоли, выбирает способ отображения значения.Кажется, в вашей среде выбрано использование firstDay.toISOString() или firstDay.toJSON() для отображения значения в консоли.

Если вы хотите принудительно увидеть то же значение в консоли, которое увидит пользователь, затем преобразуйтеDate объект в строку перед передачей ее в console.log следующим образом:

console.log("" + firstDay); // Force string conversion before logging

Я вижу разницу при выполнении этого как фрагмент встроенного кода в StackOverflow:

var dateD = new Date(), y = dateD.getFullYear(), m = dateD.getMonth();
var firstDay = new Date(y, m, 1);

alert(firstDay) 
console.log("Date object passed directly to log: ", firstDay)
console.log("Date object converted to string: " + firstDay)
0 голосов
/ 27 сентября 2019

Попробуйте это

var date = new Date();
var first = new Date(date.getFullYear(), date.getMonth(), 1);
var last = new Date(date.getFullYear(), date.getMonth() + 1, 0);
...