NodeTime如何使用System.Text.Json将ZoneDateTime序列化为ISO-8601格式

NodeTime如何使用System.Text.Json将ZoneDateTime序列化为ISO-8601格式,json,asp.net-core,iso8601,nodatime,zoneddatetime,Json,Asp.net Core,Iso8601,Nodatime,Zoneddatetime,是否有方法使用System.Text.Json将ZoneDateTime序列化为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 = DateTi

是否有方法使用System.Text.Json将ZoneDateTime序列化为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格式。

您是否尝试过:DateTime.UtcNow.ToStringu.Replace“”,“t”;?您能分享一个示例代码并给出场景的结果吗?谢谢,您提到解析时没有使用DateTimeOffset,我只能看到通过LocaDateTime和一个看起来更复杂的Offset进行解析?我遗漏了什么吗?@DavidHayes:也许你遗漏了OffsetDateTimePattern,这是解析OffsetDateTime的自然方式?