【无标题】C# JToken:获取原始/原始JSON值 ;将2021-08-05T05:13:19Z 时间格式转为DateTime

本文介绍了在C#中解析Json时遇到RFC3339时间格式(如"2021-08-05T05:13:19Z")的问题及解决方法。通过设置JsonSerializerSettings的DateParseHandling属性为DateParseHandling.None,避免日期字符串被自动转换,然后使用DateTime.ParseExact进行正确格式化。
摘要由CSDN通过智能技术生成

项目场景:

提示:这里简述项目相关背景:

在设备上传数据解析Json时候、遇到RFC3339 时间格式的数据,类似这样"dateTime":“2021-08-05T05:13:19Z”,需要将该时间转换为DateTime 时间格式

问题描述

提示:这里描述项目中遇到的问题:
问题1:将JObject 时间对象转换为字符串时,awsdevdata.dateTime = rb[“dateTime”].ToString(), 转换后的格式为"2021-08-05 05:13:19",这样再格式化是错误的

问题2:


原因分析:

提示:这里填写问题的分析:

查阅了相关资料,
https://qa.1r1g.com/sf/ask/2459684251/
这属于获取原始json 的值问题
经过转换时日期字符串被识别并转换为自身DateTime内部的结构,需要更改设置为JsonSerializerSettings.DateParseHandling = DateParseHandling.None:

解决方案:

问题1:
按照资料给的方式,在转换之前将jsonSerializerSettings 设置为None
JsonSerializerSettings settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None };
//JavaScriptSerializer jss = new JavaScriptSerializer();
JObject rb = (JObject)JsonConvert.DeserializeObject(m.Body, settings);
AwsDevDatabody awsdevdata = new AwsDevDatabody();
awsdevdata.TEUnum = rb[“TEUnum”].ToString();
awsdevdata.DeviceId = rb[“DeviceID”].ToString();
awsdevdata.dateTime = rb[“dateTime”].ToString();

问题2:c#解析时间格式 2021-08-05T05:13:19Z
eventdata.EventdateTime = DateTime.ParseExact(awsdata.dateTime, “yyyy-MM-ddTHH:mm:ssZ”, System.Globalization.CultureInfo.InvariantCulture);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值