将JSON日期解析为C#DateTime

Vic*_*dez 7 c# datetime json

我有一个API从targetProcess获取信息并将该信息放在sql表中.

当targetProcess字段是date时,问题就出现了,因为我收到它作为json日期"/Date(1409202000000-0500 )/".

如何在c#中将此json日期转换为Datetime?

我一直在尝试在这个StackOverflow帖子中添加像asnwer这样的额外引号,但它不起作用.

我试图替换单词日期为只使用1409202000000-0500

DateTime dotNetDate = new DateTime(1970, 1, 1);
dotNetDate = dotNetDate.AddMilliseconds(Convert.ToInt64(1409202000000-0500) 
Run Code Online (Sandbox Code Playgroud)

我下面也使用JSON.NET

string sa = "/Date(1409202000000-0500 )/"
DateTime dt = new DateTime();
dt = JsonConvert.DeserializeObject<DateTime>(sa);
Run Code Online (Sandbox Code Playgroud)

但它也不起作用,

所以问题是......我如何将这个json日期转换为c#中的Datetime?

Dav*_*d L 12

您需要手动将字符串"以编程方式"包装在引号中,以确保正确格式化:

string sa = @"""" + "/Date(1409202000000-0500 )/" + @"""";
DateTime dt = JsonConvert.DeserializeObject<DateTime>(sa);
Run Code Online (Sandbox Code Playgroud)

如果你需要多次调用它(看起来像你这样做),只需将包装责任移到一个方法:

public string WrapStringInQuotes(string input)
{
    return @"""" + input + @"""";
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您可以访问较新版本的 C#,您可以简化为 `var dateTime = @"""/Date(1573074780000-0500)/""";` 我仍然很困惑为什么默认转换不会无需添加引号即可工作。 (2认同)

小智 5

问题出在你的日期字符串上。代替

string sa = "/Date(1409202000000-0500 )/"
Run Code Online (Sandbox Code Playgroud)

尝试

string sa = @"""/Date(1409202000000-0500)/""";
Run Code Online (Sandbox Code Playgroud)

更改您的代码:

 string sa = @"""/Date(1409202000000-0500)/""";
            DateTime dt = new DateTime();
            dt = JsonConvert.DeserializeObject<DateTime>(sa);
            // dt = "2014-08-28 3.00.00 PM"
Run Code Online (Sandbox Code Playgroud)