为了账号安全,请及时绑定邮箱和手机立即绑定

反序列化 DateTimeOffset 时需要时区信息

反序列化 DateTimeOffset 时需要时区信息

C#
PIPIONE 2023-07-09 16:38:26
我正在尝试验证从 API 端点获取的数据。用户应该能够发送DateTimeOffset. 目前,我正在使用自己的实现JsonConverter来验证DateTimeOffset. 我尝试过多种日期时间格式,但没有一个能像我想要的那样工作。"yyyy-MM-ddTHH:mm:ss.fffK"这适用于:2010-01-01T01:01:01.0002010-01-01T01:01:01.000Z2010-01-01T01:01:01.000+01:00问题是,除了它工作得很好之外,它并没有像上面的示例中那样强制指定时间偏移或 Z。"yyyy-MM-ddTHH:mm:ss.fffzzz"这仅适用于:2010-01-01T01:01:01.000+01:00它不接受 Z 作为时间偏移。是否有一种DateTimeOffset格式可以指定只接受以下内容:2010-01-01T01:01:01.000Z2010-01-01T01:01:01.000+01:00
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

使用“K”格式说明符,该部分的空字符串相当于 a DateTime.Kindof Unspecified

因此,这就是为什么它仍然可以正确解析,但在解析中我们可以通过检查DateTime.KindDateTime属性来区分差异,如果未指定则拒绝输入。例如:

var date = DateTime.ParseExact("2010-01-01T01:01:01.000", "yyyy-MM-ddTHH:mm:ss.fffK", null);

if (date.Kind == DateTimeKind.Unspecified)

    throw new ArgumentException("You must specify a time offset");


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信