首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JSON date解析为C# DateTime

将JSON date解析为C# DateTime
EN

Stack Overflow用户
提问于 2017-03-31 08:23:31
回答 3查看 24.4K关注 0票数 10

我有一个从targetProcess获取信息并将该信息放入sql表中的应用程序接口。

当targetProcess字段是date时,问题就出现了,因为我是以json date "/Date(1409202000000-0500 )/"的形式收到它的。

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

我一直在尝试添加额外的引号,就像在这个StackOverflow Post中添加引号一样,但它不起作用。

我尝试将单词Date替换为只使用1409202000000-0500 in

代码语言:javascript
复制
DateTime dotNetDate = new DateTime(1970, 1, 1);
dotNetDate = dotNetDate.AddMilliseconds(Convert.ToInt64(1409202000000-0500) 

我使用too JSON.NET作为bellow

代码语言:javascript
复制
string sa = "/Date(1409202000000-0500 )/"
DateTime dt = new DateTime();
dt = JsonConvert.DeserializeObject<DateTime>(sa);

但它也不能工作,

那么问题是,我是否可以在c#中将这个json日期转换为is....How时间?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-31 09:01:46

您需要手动将字符串“程序化地”括在引号中,以确保其格式正确无误:

代码语言:javascript
复制
string sa = @"""" + "/Date(1409202000000-0500 )/" + @"""";
DateTime dt = JsonConvert.DeserializeObject<DateTime>(sa);

如果您需要多次调用它(看起来您确实需要),只需将包装责任转移到一个方法:

代码语言:javascript
复制
public string WrapStringInQuotes(string input)
{
    return @"""" + input + @"""";
}
票数 18
EN

Stack Overflow用户

发布于 2017-03-31 09:10:34

问题出在日期字符串上。而不是

代码语言:javascript
复制
string sa = "/Date(1409202000000-0500 )/"

试一试

代码语言:javascript
复制
string sa = @"""/Date(1409202000000-0500)/""";

更改您的代码:

代码语言:javascript
复制
 string sa = @"""/Date(1409202000000-0500)/""";
            DateTime dt = new DateTime();
            dt = JsonConvert.DeserializeObject<DateTime>(sa);
            // dt = "2014-08-28 3.00.00 PM"
票数 4
EN

Stack Overflow用户

发布于 2020-05-03 02:44:46

这就是我的函数。甚至有一种可能是,你可以得到一个更短的Json日期,比如在OpenweatherAPI中,日出和日落,那么在这种情况下,你需要乘以1000。我的函数可以处理这两种情况。

代码语言:javascript
复制
    public static DateTime GetDateTimeFromJSON(long jsonDateTime, bool shorter = false)
    {
        return JsonConvert.DeserializeObject<DateTime>($"\"\\/Date({ (shorter ? jsonDateTime * 1000 : jsonDateTime) })\\/\"", new JsonSerializerSettings
        {
            DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
        }).ToLocalTime();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43130444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档