Минимальная дата JSON

1. frkbvfnjh 787 19.06.18 14:29 Сейчас в теме
Всем доброго времени суток! Столкнулся с проблемой, что средствами платформы в JSON не возможно записать пустую дату, вернее если потом получить ее из получившегося текста JSON, значение вернется как 01.01.0001 5:07:48, и как потом выяснилось, это минимальная дата которую можно писать в JSON, т.е. если записать дату меньше этой, все равно вернется 01.01.0001 5:07:48 при десериализации. Собственно вопрос - это нормальное поведение платформы? И если да, то где можно почитать на официальных сайтах 1С про это ограничение? Или я что то не так делаем? Или что то не то с региональными настройками? Но тогда почему все нормально работает с датами больше 01.01.0001 5:07:48? Что делать и как быть, проявляется ли у кого нибудь еще такое поведение?
Вот код примера:

ПустаяДата = '0001/01/01';

НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата; 

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("Дата", ПустаяДата), НастройкиСериализации);
ТекстJSON = ЗаписьJSON.Закрыть();

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, , "Дата", ФорматДатыJSON.ISO);

Сообщить(Строка(ПустаяДата) + " >> " + СтрЗаменить(ТекстJSON, Символ(13) + Символ(10), "") + " >> " + ДанныеJSON.Дата, СтатусСообщения.БезСтатуса);
Показать



Для меня, и всех моих коллег, такое поведение оказалось неожиданностью...
Тестировалось на 8.3.10.2650 и 8.3.12.1469.
Было замечено что минимальное значение даты варьируется в зависимости от часового пояса.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. spacecraft 19.06.18 15:15 Сейчас в теме
(1) достаточно сделать так:
//НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
Или просто убрать эту строку.
10. frkbvfnjh 787 19.06.18 15:20 Сейчас в теме
(9) Какое значение ВариантЗаписиДатыJSON тогда используется по умолчанию?
11. spacecraft 19.06.18 15:23 Сейчас в теме
(10) локальная дата.
А Универсальная дата это UTC. По Гринвичу.
2. plevakin 19.06.18 14:49 Сейчас в теме
Странно, что возвращается 01.01.0001. Вообще дата в json это число секунд по гринвичу с 1.01.1970. Еще в семерке, когда парсил json делал следующее

Дата = Дата(1970,1,1) + Окр((Число(мДата) / 1000 / 3600 -5) / 24);// пять подобрано эмипирически с учетом нужных часовых поясов.
3. Timur.V 78 19.06.18 15:01 Сейчас в теме
Данные типа Дата сериализуются в JSON автоматически, а вот обратное преобразование (десериализация) может быть выполнено не всегда. JSON не содержит типа Дата, значения даты представляются в нём строкой. Конечно, существуют некоторые форматы представления дат, но вообще говоря, внешний вид такой строки может быть самым разнообразным.
4. frkbvfnjh 787 19.06.18 15:07 Сейчас в теме
Да интересно, если читать между строк, то все верно. Можно ссылку на цитату?
5. Timur.V 78 19.06.18 15:08 Сейчас в теме
6. пользователь 19.06.18 15:09
Сообщение было скрыто модератором.
...
7. Timur.V 78 19.06.18 15:10 Сейчас в теме
(4) Средства работы с JSON (на сайте 1с) что-то ссылка не вставляется (рейтинг маленький или запрещено сайтом)
8. frkbvfnjh 787 19.06.18 15:12 Сейчас в теме
(7) Спасибо. Тем не менее, кто не знает - знайте, что вот такая байда с датами в JSON 1С, так что все даты лучше обрабатывать своими алгоритмами
12. Docaru 1 19.06.18 15:31 Сейчас в теме
не понимаю в чем проблема - используйте локальную дату - все норм:
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот