保留当地时间的日期

时间:2017-04-20 10:07:15

标签: c# json xamarin json.net

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信息。也许我需要一个自定义日期deserilizer来处理这种情况或设置文化。

我正在使用Newtonsoft.Json版本9.0.1

1 个答案:

答案 0 :(得分:3)

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

例如,通过向UpcomingMeetingListDto添加属性。

public DateTime LocalMeetingDate => MeetingDate.ToLocalTime();

试试这个online epoch converter,它会显示本地和gmt时间。