c# - WCF DataContractJsonSerializer 如何反序列化 json DateTime?
问题描述
我有2个datetime json字符串,唯一的区别是偏移部分,一个是-08,另一个是-09:
"/Date(946713600000-0800)/"
"/Date(946713600000-0900)/"
当我使用 DataContractJsonSerializer 反序列化它们时
var serializer = new DataContractJsonSerializer(typeof(DateTime));
byte[] byteArray1 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0800)\\/\"");
MemoryStream stream1 = new MemoryStream(byteArray1);
var datetime1 = serializer.ReadObject(stream1 );
byte[] byteArray2 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0900)\\/\"");
MemoryStream stream2 = new MemoryStream(byteArray2);
var datetime2 = serializer.ReadObject(stream2 );
结果超大我,datetime1 和 datetime2 完全一样!两者都是 {1/1/2000 12:00:00 AM},datetime1.Kind 和 datetime2.Kind 都是本地的。
我希望他们有一个小时的差异。为什么它们是一样的?
解决方案
时间部分是两个日期之间的相同值。在您的示例中,偏移量(表示为 -0900 和 -0800)只是表示捕获本地时间的 UTC 偏移量的额外信息。
推荐阅读
- spring - 如果我的招摇 UI(由 Spring Boot 生成)没有显示 x-www-form-urlencoded 正文的请求正文,如何解决它?
- python - 如何在 Python 中修复“NameError”
- java - Springboot - 使用骆驼追踪器创建自己的 Opentracing 跨度
- bitbucket - 更改 bitbucket 上的时间戳
- primefaces - 验证失败后重新评估所需的表达式
- json - JSON_QUERY 无法处理 NULL
- machine-learning - 验证准确性停滞不前,而训练准确性提高
- c - 如何在c89中定义浮点双精度常量
- cors - CORS 协议不允许同时指定通配符(任何)来源和凭证
- javascript - 如何在 HighCharts 的点击函数中访问外部范围变量