c# - 是否可以使用 Json.NET 将 DateTimeOffset 序列化为祖鲁时间字符串?

标签 c# json.net datetimeoffset

我有一个“05/06/2014 05:54:00 PM -04:00”的 DateTimeOffset 对象。

使用 Json.NET 和 ISO 设置进行序列化时,我得到“2014-05-06T17:54:00-04:00”。

我想要的是该字符串“2014-05-06T21:54:00Z”的 UTC/Zulu 版本。

但是,我找不到任何序列化程序设置来实现此目的。我知道对于 DateTime 序列化,我可以将 DateTimeZoneHandling = DateTimeZoneHandling.Utc 设置为 Zulu 格式。但是,DateTimeOffset 没有这样的设置选项。我错过了什么吗?还是我必须为此创建自定义覆盖?

最佳答案

尝试使用 Json.Net 自带的 IsoDateTimeConverter:

var date = new DateTime(2014, 5, 6, 17, 24, 55, DateTimeKind.Local);
var obj = new { date = new DateTimeOffset(date) };

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new IsoDateTimeConverter 
{ 
    DateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ", 
    DateTimeStyles = DateTimeStyles.AdjustToUniversal 
});

string json = JsonConvert.SerializeObject(obj, settings);
Console.WriteLine(json);

输出:

{"date":"2014-05-06T22:24:55Z"}

关于c# - 是否可以使用 Json.NET 将 DateTimeOffset 序列化为祖鲁时间字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505294/

相关文章:

对于格式化为 ISO w/时区 (127) 的字符串,SQL ISDATE 返回 false

c# - GPIO windows IOT Core 的可变电压

c# - 使用 c# 将 SQL Server 2008 数据库中的表导出到 excel

c# - 在 C# 中反序列化可能是整数或字符串列表的 JSON

c# - 将日期作为字符串传递 - 防止 json.net 解析日期

c# - 对于没有时区的 DateTimeOffset.MinValue,Json.NET 反序列化 DateTimeOffset 值失败

c# - 从 System.Type 获取静态属性的值

c# - mvc razor View 中的整数扩展

c# - 将值从字符串转换为流时出错

asp.net datetime 随机重复时间偏移。是一个错误?