Я получаю дату в виде строки '2018-10-15 00:00:00.000'
, а затем конвертирует ее в дату с использованием new Date('2018-10-15 00:00:00.000')
.
Я сохраняю эту дату в базе данных (с API) и сохраняю данные как 2018-10-15 **04**:00:00.000
. Обратите внимание на время 4 часа. API получает дату с 4:00 утра.
В моем угловом приложении объект, который содержит эту дату, определяется как тип Date
.
meeting_date: Date;
Это из консоли.
dt = new Date('2018-10-15 00:00:00.000')
Mon Oct 15 2018 00:00:00 GMT-0400 (Eastern Daylight Time)
JSON.stringify(dt)
""2018-10-15T04:00:00.000Z""
Я хочу сохранить дату как 2018-10-15 00:00:00.000
. Что я делаю неправильно?
Если полученная строка ввода даты представляет собой UTC, то вы, вероятно, захотите создать объект Date
в UTC (ваш текущий подход - создание объекта Date
по местному времени на клиентском компьютере, поэтому смещение EDT влияет на Date
время, которое вы хранят в вашей БД). Кроме того, вы должны знать, что Date()
не рекомендуется для разбора строк дат из-за несоответствий браузера.
Ниже приведен пример использования некоторого простого регулярного выражения для анализа строки и создания объекта Date
в UTC:
const inputDate = '2018-10-15 00:00:00.000';
let [y, m, d, hh, mm, ss, ms] = inputDate.match(/\d+/g).map(x => parseInt(x));
let date = new Date(Date.UTC(y, m - 1, d, hh, mm, ss, ms));
console.log(JSON.stringify(date));
// date as UTC string
console.log(date.toUTCString());
// date as local string
console.log(date.toString());
let [y, m, d, hh, mm, ss, ms] = inputDate.match(/\d+/g);
Я никогда не видел этого раньше, но человек, который делает работу со строками даты легко!