Сериализация даты и времени JSON в c # обрабатывает как однозначный, так и двузначный час

#c# #json #datetime #json.net #datetime-format

#c# #json #дата и время #json.net #datetime-format

Вопрос:

У меня есть стороннее приложение, которое отправляет дату и время JSON как в одно-, так и в двузначном часовом формате. Час отправляется как однозначный, когда меньше 10, и двузначный, когда больше или равно 10.

например

2020-12-17T9:00:00.000-04:00

2020-12-17T11:00:00.000-04:00

Я ожидаю, что 2020-12-17T9:00:00.000-04:00 отправлено как 2020-12-17T 09:00:00.000-04:00.

Существует ли какая-либо DateFormatString, которая может обрабатывать как однократный, так и двойной цифровой час?

В настоящее время я использую настройки по умолчанию в Newtonsoft, и это вызывает исключение при разборе однозначной строки в DateTime.

Комментарии:

1. Можете ли вы предоставить обратную связь стороннему приложению и исправить ее там? Он явно пытается предоставить строку ISO-8601, но этот стандарт требует двух цифр. Для них было бы лучше исправить свое форматирование, чем каждому потребителю приходилось обходить его нарушение.

2. Да, это то, что я планирую сделать. Я публикую это здесь, чтобы посмотреть, не упустил ли я что-то. Я считаю, что они передают недопустимый формат, но я хочу перепроверить, прежде чем спрашивать .. Спасибо

Ответ №1:

Я думаю, мне не следует задавать вопрос в начале. Очевидно, что сторонняя компания не передает правильный формат.

Для тех, кто хочет получить строку даты и времени в этом формате «2020-12-17T11:00:00.000-04:00», формат «гггг-ММ-DDThh: мм: ss.fffzzz»

var dateString = DateTime.Now.toString(«гггг-ММ-DDThh:мм:ss.fffzzz»);