Json日期很难,转换似乎正在逃避我。它似乎在转换中失去了时间部分。
我从API返回了以下Json Microsoft日期。我知道并且可以确认日期是2017年5月5日上午7点
然而,当使用newtonsoft反序列化日期时,我可以让它保留时区信息。我已经尝试了所有各种设置,但无法解决这个问题。
我的反序列化代码看起来像这样
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
答案 0 :(得分:3)
DateTime正确反序列化,但它是GMT格式。要显示本地时间,您应该使用ToLocalTime()方法。
例如,通过向UpcomingMeetingListDto添加属性。
public DateTime LocalMeetingDate => MeetingDate.ToLocalTime();
试试这个online epoch converter,它会显示本地和gmt时间。