关于c#:解析JSON字符串中的DateTime从客户端时间到Servertime

Parse DateTime in JSON string fromClient Time to Servertime

我从客户端向服务器发送了一个请求。我的客户在墨尔本(10),服务器在德国(1)。当我发送Datetime(11.06.2018 00:00:00 10:00)时,它将解析为德国时间(10.06.2018 16:00:00 01)。
进行解析的代码是以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
    var data = new List<object>();
    // DateTime is correct in JsonReader reader but wrong in JToken dataArray
    JToken dataArray = JToken.ReadFrom(reader); //parses in this line
    if (!dataArray.HasValues) return null;

    foreach (JToken dataItem in dataArray)
    {
        if (dataItem is JValue)
        {
            object value = (dataItem as JValue).Value;
            data.Add(value == null ? value : value.ToString());
        }
        else
        {
            data.Add(dataItem);
        }
    }

    return data.ToArray();
}

阅读器中的DateTimeZoneHandler是RoundTripKind。

如何防止解析,使日期时间保持为11.06.2018 00:00:00 10?


DateTime存储日期和时间值,以及.Kind,可以是DateTimeKind.LocalDateTimeKind.UtcDateTimeKind.Unspecified。它不能存储任意偏移量。

相反,DateTimeOffset存储日期和时间值,以及与UTC的偏移量。

因此,如果要保留与接收到的相同的偏移量,则不应使用DateTime类型,而应使用DateTimeOffset类型。它是为此目的而制成的。