c#中的JSON DateTime序列化处理一位数和两位数小时

Posted

技术标签:

【中文标题】c#中的JSON DateTime序列化处理一位数和两位数小时【英文标题】:JSON DateTime serialisation in c# handle both single digit and double digit hour 【发布时间】:2021-04-22 11:48:57 【问题描述】:

我有一个第 3 方应用程序,它以单位数和两位数小时格式发送 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-17T09:00:00.000-04:00。

是否有任何 DateFormatString 可以同时处理单数字小时和双数字小时?

目前,我在 Newtonsoft 中使用默认设置,在将单个数字字符串解析为 DateTime 时会引发异常。

【问题讨论】:

您能否向第三方应用程序提供反馈并在那里进行修复?显然 trying 提供了一个 ISO-8601 字符串,但该标准需要两位数。对他们来说,修复他们的格式比让每个消费者都必须解决它被破坏要好。 是的,这就是我打算做的。我把它贴在这里看看我是否遗漏了什么。我相信他们通过了无效的格式,但我想在问之前仔细检查一下......谢谢 【参考方案1】:

我想我不应该一开始就问这个问题。很明显,第 3 方公司没有通过正确的格式。

想要获取“2020-12-17T11:00:00.000-04:00”这种格式的日期时间字符串,格式为“yyyy-MM-ddThh:mm:ss.fffzzz”

var dateString = DateTime.Now.ToString("yyyy-MM-ddThh:mm:ss.fffzzz");

【讨论】:

以上是关于c#中的JSON DateTime序列化处理一位数和两位数小时的主要内容,如果未能解决你的问题,请参考以下文章

字定义JSON序列化支持datetime格式序列化

如何使用 Jackson JSON 处理器序列化 Joda DateTime?

C# 使用linq处理返回带datetime类型数据 json显示/date(xxxxx)/

mongomongo数据转json时特殊类型处理

使用 Python (Pandas) 反序列化 json 文件中的 DateTime 字段

Java与C#间json日期格式互转完美解决方案