Nodatime Как сериализовать ZonedDateTime в формат ISO-8601 с использованием System.Text. Json - PullRequest
0 голосов
/ 15 марта 2020

Есть ли способ сериализации ZonedDateTime в строку ISO 8601 с использованием System.Text. Json?

В настоящее время я получаю вывод в этом формате 2020-03-15T15: 14: 53Z UT C, который не соответствует ISO 8061.

Конечная цель состоит в том, чтобы передать это в Момент. js для дальнейшего форматирования

РЕДАКТИРОВАТЬ: Добавление фрагмента кода, отмечая сложный, просто создание ZonedDateTime из DateTimeOffset

//Incoming Date format "Mon Feb 10 16:46:03 +0000 2020"
var dto = DateTimeOffset.ParseExact(date, "ddd MMM dd HH:mm:ss K yyyy", CultureInfo.InvariantCulture.DateTimeFormat);
var zdt = dto.ToZonedDateTime();

1 Ответ

1 голос
/ 19 марта 2020

ISO-8601 не имеет представления часовых поясов - только смещения UT C. (К сожалению, это относится к ним как к часовым поясам, но это не так.)

Если вы создаете ZonedDateTime из DateTimeOffset, я бы предложил не делать этого, а вместо этого использовать OffsetDateTime, которая фактически представляет информацию, которую вы имеете. (Вы также можете анализировать это непосредственно из начального значения, а не через DateTimeOffset.)

Хотя я не проверял, я ожидал бы, что представление OffsetDateTime JSON будет ISO -8601 формат.

...