Разобрать DateTime в строке JSON от времени клиента до времени сервера - PullRequest
0 голосов
/ 11 июня 2018

Я отправляю запрос от клиента на сервер.Мой клиент находится в Мельбурне (+10), а сервер находится в Германии (+1).Когда я отправляю Datetime (11.06.2018 00: 00: 00 + 10: 00), он анализируется по немецкому времени (10.06.2018 16: 00: 00 + 01).Код, в котором происходит синтаксический анализ, выглядит следующим образом:

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

1 Ответ

0 голосов
/ 13 июня 2018

DateTime хранит значение даты и времени, а также .Kind, которое может быть DateTimeKind.Local, DateTimeKind.Utc или DateTimeKind.Unspecified.Он не может хранить произвольное смещение.

И наоборот, DateTimeOffset хранит значение даты и времени, а также смещение от UTC.

Таким образом, если вы хотите сохранить то же смещение, которое вы получилиВы не должны использовать тип DateTime, а вместо этого использовать DateTimeOffset.Это сделано для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...