Json.NET在DateTime上的反序列化-不是正确的时间(-6小时)

本文关键字:时间 -6小时 NET DateTime Json 反序列化 | 更新日期: 2023-09-27 18:00:04

我的应用程序来自客户端和服务器。客户端和服务器交换json数据。同一客户端和服务器上的时区(+4)。此数据类

public class MyData()
{
    public DateTime Start {get;set;}
}

在服务器上,我从数据库MS SQL中选择数据,并提供给客户端。当我对客户端数据字段进行反序列化时,Start的偏移量为-6小时。我怎样才能得到正确的时间?我可以使用JsonSerializerSettings在客户端上获得正确的时间吗?我试过

var jsonSerializerSettings = new JsonSerializerSettings()
{
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, 
    DateParseHandling = DateParseHandling.DateTimeOffset, 
    DateTimeZoneHandling = DateTimeZoneHandling.Local
};
var result = JsonConvert.DeserializeObject<MyData>(content,  jsonSerializerSettings);

但是它给出了+3的偏移。我需要偏移+6。

Json.NET在DateTime上的反序列化-不是正确的时间(-6小时)

序列化将日期时间转换为UTC。在取消序列化时,您需要将其转换为本地时间:

试试这样的东西:

var dateWithLocalTimeZone = myDate.ToLocalTime();