Nodatime 如何使用 System.Text.Json 将 ZonedDateTime 序列化为 ISO-8601 格式
Nodatime How do I serialize ZonedDateTime to ISO-8601 format using System.Text.Json
有没有办法使用 System.Text.Json 将 ZonedDateTime 序列化为 ISO 8601 字符串?
我目前得到的输出格式为 2020-03-15T15:14:53Z UTC,不符合 ISO 8061 标准。
最终目标是将其输入 Moment.js 以进一步格式化
编辑:添加代码片段,注意复杂,只是从 DateTimeOffset 创建 ZonedDateTime
//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();
ISO-8601 没有任何时区表示 - 只有 UTC 时差。 (不幸的是,它将那些称为时区,但它们不是。)
如果您从 DateTimeOffset
构建 ZonedDateTime
,我建议您不要这样做,而是使用 OffsetDateTime
,它实际上代表了您拥有的信息。 (您也可以直接从初始值解析它,而不是通过 DateTimeOffset
。)
虽然我没有检查,但我希望 OffsetDateTime
JSON 表示是 ISO-8601 格式。
有没有办法使用 System.Text.Json 将 ZonedDateTime 序列化为 ISO 8601 字符串?
我目前得到的输出格式为 2020-03-15T15:14:53Z UTC,不符合 ISO 8061 标准。
最终目标是将其输入 Moment.js 以进一步格式化
编辑:添加代码片段,注意复杂,只是从 DateTimeOffset 创建 ZonedDateTime
//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();
ISO-8601 没有任何时区表示 - 只有 UTC 时差。 (不幸的是,它将那些称为时区,但它们不是。)
如果您从 DateTimeOffset
构建 ZonedDateTime
,我建议您不要这样做,而是使用 OffsetDateTime
,它实际上代表了您拥有的信息。 (您也可以直接从初始值解析它,而不是通过 DateTimeOffset
。)
虽然我没有检查,但我希望 OffsetDateTime
JSON 表示是 ISO-8601 格式。