new Date() возвращает день до дня в строке даты и времени в JavaScript
У меня есть существующая строка даты и времени
new Date('2014-08-01T00:00:00')
Но вместо возврата 2014-08-01, он возвращается как 2014-07-31 в представлении angularJS.
Интересно, эта строка даты и времени действительна, если нет, то почему она не действительна.
Может ли T
быть причиной того, что строка возвращает неправильную дату?
Console.log возвращает дату Thu Jul 31 2014 20:00:00 GMT-0400 (EDT)
Благодарю вас
Давайте назовем эти -2 ядовитыми. Они должны действительно вспомнить те дни, когда они изо всех сил пытались понять основные концепции, которые сейчас им присущи. Это позор.
3 ответа
В настоящее время (осень 2014 г.) формат даты / времени в JavaScript отличается от ISO-8601 очень важным образом: если в строке нет индикатора часового пояса, он предполагает Z
("Зулу", GMT).
Так
new Date('2014-08-01T00:00:00')
... 1 августа в полночь по Гринвичу. Если вы живете к востоку от времени по Гринвичу, это будет 31-е по вашему местному времени.
Однако эта несовместимость с ISO-8601 исправлена в ES6, и некоторые реализации (включая последнюю версию V8 в Chrome) уже обновляют ее. Спецификация ES6 меняет значение по умолчанию на местное время; см. §20.3.1.15 ("Формат строки даты и времени", номер раздела может измениться) в черновиках PDF или этой неофициальной HTML-версии.
Отображаемая дата использует часовой пояс вашего браузера / компьютера. Это означает, что если вы находитесь в GMT-1 и вводите 2014-08-01T00:00:00
фактическая дата 2014-08-01T00:00:00 - 1 hour
знак равно 2014-07-31T23:00:00
У меня есть эта дата в startdate=2021-10-27T00:00:00-04:00,d=new Date(data.StartDate) // outputTue 26 октября 2021 23:00:00 GMT-0500 Но дата становится на один день до «Вторник, 26 октября 2021 г., 23:00:00 GMT-0500» в центральном часовом поясе (ниже -6,-7,-8...).
На самом деле я использовал это, он работает нормально, но для центрального часового пояса не работает var d = new Date(data.StartDate);console.log(данные.startDate);$scope.txtStartDate = ("0" + (d.getMonth() + 1)).slice(-2) + "/" + ("0" + d.getDate()).slice(-2) + " /" + d.getFullYear();