2016-09-23 120 views
0

这很简单。我有一个字符串无法解析JSON数据到.NET DateTime

string s = "/Date(1474408920000)/" 

我想将其转换为一个日期:

DateTime date = JsonConvert.DeserializeObject<DateTime>(s); 

但我得到的错误:

“错误分析评论预计:*,得到了D.路径“,第1行,第1位。”

这是怎么回事?

感谢您的帮助!

+0

在JavaScript中,两个'/'之间的任何内容都代表正则表达式。 – itsme86

+0

你会想要使用Parse或tryparse ...但首先是什么日期格式?时代,Linux/Windows? mmssssDDmmyyyy? –

回答

1

您的JSON字符串无效,但可以很容易地通过"

string s = @"""/Date(1474408920000)/"""; 

现在DateTime date = JsonConvert.DeserializeObject<DateTime>(s);周围固定将工作

+0

谢谢。很有帮助。顺便说一下,如果您想要将它与您的程序中的其他日期时间进行比较,请确保使用.ToLocalTime()! – coolboyjules

0
 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)\\/\""; 
0

尝试使用下面的代码将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 });