gpt4 book ai didi

json.net - 在 JSON.net 中解析 UTC 时间

转载 作者:行者123 更新时间:2023-12-05 08:58:19 25 4
gpt4 key购买 nike

我有一个 JSON 文件,我已将其反序列化为我创建的名为 MyType 的类

JsonConvert.DeserializeObject<MyType>(json);

其中一个 JSON 属性是以 UTC 表示的时间。我把这个 UTC 时间转换成一个 DATETIME 对象

DateTime timestamp = DateTime.ParseExact(
JsonTime, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);

当 UTC 时间为:2014-06-25T00:30:07.9289078+00:00 时,以上内容运行良好

但吐在:2014-06-24T00:31:08.62124+00:00

我怀疑这很可能是因为在“+”之前缺少尾随的“0”

我在玩 JSON.net 并尝试使用 Jtoken.Parse 方法,它似乎在做我想做的事情。

var t = Newtonsoft.Json.Linq.JToken.Parse(
@"{ ""x"": ""2014-06-24T00:31:08.62124+00:00"" }").Value<DateTime>("x");

JToken.Parse 如何正确转换此 UTC 时间以及我如何在 JsonConvert.DeserializeObject<MyType>(json); 中使用它?

我试过设置这个

public static JsonSerializerSettings JsonSerializerSettings1
{
get
{
return new JsonSerializerSettings { DateParseHandling = DateParseHandling.DateTime};
}
}
.......
return JsonConvert.DeserializeObject<MyType>(json, JsonSerializerSettings1);

反序列化时仍然没有将UTC转换成日期时间

最佳答案

您是否尝试将 DateFormatHandling 设置为 IsoDateFormat 并将 DateTimeZoneHandling 设置为 Utc

class Program
{
static void Main(string[] args)
{
string json = @"{ ""Date"": ""2014-06-24T00:31:08.62124+00:00"" }";

JsonSerializerSettings settings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};

MyType obj = JsonConvert.DeserializeObject<MyType>(json, settings);

Console.WriteLine(obj.Date.ToString());
}
}

class MyType
{
public DateTime Date { get; set; }
}

关于json.net - 在 JSON.net 中解析 UTC 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24421418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com