@Dima231

Почему JSON.stringify как-то странно преобразует пустую дату?

Здравствуйте! В JavaScript метод JSON.stringify непонятно преобразует пустую дату. В самом объекте она выглядит так: Mon Jan 01 0001 00:00:00. А в строке, которая получается после серелизации дата становится вот такой: 0000-12-31Т21:29:43. Т.е. в объекте был год 0001, а в Json строке 0000. Я так понимаю, что именно из за этого Asp.net Core не хочет принимать данные от клиента(когда в параметрах контроллера модель заполняется). Подскажите пожалуйста как это поправить.
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Разобраться с часовыми поясами, какие они были в 1 году нашей эры. Либо всё держать в GMT, а пересчитывать только при выводе.
new Date('0001-01-01 00:00:00');
// Date Mon Jan 01 0001 00:00:00 GMT+0230 (Москва, стандартное время)

new Date('0001-01-01 00:00:00Z');
// Date Mon Jan 01 0001 02:30:17 GMT+0230 (Москва, стандартное время)
Ответ написан
Комментировать
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Судя по всему, если внутри сериализуемого JSON встречается объект типа Date, то для его сериализации используется метод Date.toJSON(), который и создает строку наподобие 0000-12-31Т21:29:43

Вот так с ходу вижу 2 варианта:
1. подменить метод Date.toJSON(), но это может затронуть другие части кода явно или неявно использующие этот метод
2. не класть внутрь сериализуемого JSON объекты типа Date, а использовать вместо них timestamp (количество секунд/миллисекунд прошедших с момента некой стартовой даты. Это можно сделать например так myDate.valueOf().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сбер Санкт-Петербург
от 250 000 ₽
от 3 000 до 4 500 €
NewGen Vision Санкт-Петербург
от 30 000 до 60 000 ₽
28 нояб. 2021, в 12:33
50000 руб./за проект
28 нояб. 2021, в 12:03
10000 руб./за проект
28 нояб. 2021, в 12:03
25000 руб./за проект