无法解析JSON数据到.NET DateTime
问题描述:
这很简单。我有一个字符串无法解析JSON数据到.NET DateTime
string s = "/Date(1474408920000)/"
我想将其转换为一个日期:
DateTime date = JsonConvert.DeserializeObject<DateTime>(s);
但我得到的错误:
“错误分析评论预计:*,得到了D.路径“,第1行,第1位。”
这是怎么回事?
感谢您的帮助!
答
您的JSON字符串无效,但可以很容易地通过"
string s = @"""/Date(1474408920000)/""";
现在DateTime date = JsonConvert.DeserializeObject<DateTime>(s);
周围固定将工作
+0
谢谢。很有帮助。顺便说一下,如果您想要将它与您的程序中的其他日期时间进行比较,请确保使用.ToLocalTime()! – coolboyjules
答
var LogDate = new DateTime(2016, 9, 20, 22, 2, 0, DateTimeKind.Utc);
string JsonDate = JsonConvert.SerializeObject(LogDate, new JsonSerializerSettings {
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
});
Console.WriteLine(JsonDate);
Console.ReadLine();
输出从这个代码给你一个正确的JSON日期格式:
"\/Date(1474408920000)\/"
所以你的字符串应该是厕所k像这样:
string s = "\"\\/Date(1474408920000)\\/\"";
答
尝试使用下面的代码将DateTime obj序列化为JSON。
var dateTime = DateTime.Now;
var jsonDate = Newtonsoft.Json.JsonConvert.SerializeObject(dateTime,
new Newtonsoft.Json.JsonSerializerSettings() {
DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
DateParseHandling = Newtonsoft.Json.DateParseHandling.DateTime });
jsonDate
会保持这个值"\"\\/Date(1474408920000)\\/\""
什么的这种格式。
现在使用下面的代码反序列化您的json日期字符串。
var dateObj = Newtonsoft.Json.JsonConvert.DeserializeObject<DateTime>(dateString,
new Newtonsoft.Json.JsonSerializerSettings() {
DateParseHandling = Newtonsoft.Json.DateParseHandling.DateTime,
DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat });
在JavaScript中,两个'/'之间的任何内容都代表正则表达式。 – itsme86
你会想要使用Parse或tryparse ...但首先是什么日期格式?时代,Linux/Windows? mmssssDDmmyyyy? –