gpt4 book ai didi

c# - 反序列化保留本地时间的日期

转载 作者:行者123 更新时间:2023-11-30 15:58:19 26 4
gpt4 key购买 nike

Json 日期很难,转换似乎在逃避我。似乎在转换中丢失了时间部分。

我从 API 返回以下 Json Microsoft 日期。我知道并可以确认日期是 2017 年 5 月 5 日早上 7 点

enter image description here

然而,当使用 newtonsoft 反序列化日期时,我可以让它保留时区信息。我已经尝试了所有各种设置,但无法解决这个问题。

enter image description here

我的反序列化代码如下所示

var settings = new JsonSerializerSettings {
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
DateParseHandling = DateParseHandling.DateTimeOffset,
DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind
};

items = JsonConvert.DeserializeObject<List<UpcomingMeetingListDto>>(
responseContent, settings);

当然,这一定很容易,我就是能理解。我想一定是因为json中的日期格式没有关联的TZ信息。也许我需要一个自定义日期解串器来处理这种情况或设置文化。

我使用的是 Newtonsoft.Json 版本 9.0.1

最佳答案

DateTime 已正确反序列化,但它是 GMT。要显示本地时间,您应该使用 ToLocalTime() 方法。

例如,将属性添加到您的 UpcomingMeetingListDto。

public DateTime LocalMeetingDate => MeetingDate.ToLocalTime();

试试这个 online epoch converter ,它会显示本地时间和格林威治标准时间。

关于c# - 反序列化保留本地时间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43516438/

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