Почему форматирование даты в формате angular или в формате момента уменьшает день от даты со временем T00: 00: 00.000Z - PullRequest
0 голосов
/ 12 июля 2020

У меня есть приложение, которое возвращает даты из базы данных в следующем формате (2020-07-12T00: 00: 00.000Z). Когда я форматирую дату через канал Angular или форматирование момента, оно сокращается на один день от даты,

например, когда я форматирую дату (2020-07-12T00: 00: 00.000Z), чтобы получить только дату, на которую она изменилась (2020-07-11), любое решение, как я могу получить дату без сокращенного дня.

     moment(2020-07-12T00:00:00.000Z).format('YYYY-MM-DD');

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Уродливое решение, предполагающее, что эти значения даты из db являются фактическими строками, а не объектами даты, и, если я правильно понимаю, вас интересует только день, вы можете разрезать строку следующим образом:

moment(date.slice(0, -14)).format('YYYY-MM-DD')
1 голос
/ 12 июля 2020

Moment сохраняет смещение UT C, если вы передаете его, как в вашем примере (Z = Zulu time = UTC + 0)

Кажется, что ваш местный часовой пояс имеет отрицательное смещение UT C, например UT C -1, что в вашем примере будет означать, что дата в вашем часовом поясе на самом деле является днем ​​раньше, чем по зулусскому времени.

Вы можете подтвердить это, распечатав строку даты ISO 8601 из вашего объекта момента:

moment('2020-07-12T00:00:00.000Z').toISOString();
// -> "2020-07-12T00:00:00.000Z"

moment('2020-07-12T00:00:00.000Z').toISOString(true);
// -> local time e.g. "2020-07-12T03:00:00.000+03:00"
// if your UTC offset is +3

moment('2020-07-12T00:00:00.000Z').toISOString(true);
// -> local time e.g. "2020-07-11T23:00:00.000-01:00"
// if your UTC offset is -1
...