Как правильно десериализовать Json DateTimeOffset? - PullRequest
2 голосов
/ 05 апреля 2019

У меня возникла проблема при попытке десериализации DateTimeOffset из json.Я видел много вопросов здесь, но, похоже, никто не работает.Я получил от Json эту датуВремя: 04.05.2009, 14:39:33 по Гринвичу, и я хочу, чтобы смещение было равно нулю.Кстати, после десериализации я получил свой объект с таким же точным временем (в данном случае 02:39:33 PM), но с моим часовым поясом (+02: 00).Я попробовал эти два обходных пути, но безуспешно:

Прежде всего, я попытался установить настройки для моего десериализатора:

JsonSerializerSettings serializerSettings = new JsonSerializerSettings
    {
        DateFormatHandling = DateFormatHandling.IsoDateFormat,
        DateTimeZoneHandling = DateTimeZoneHandling.Utc,
        DateParseHandling = DateParseHandling.DateTimeOffset,
        DateFormatString = "dd/MM/yyyy hh:mm:ss tt 'GMT'"
    };

Я тоже попробовал этот конвертер:

class DateFormatConverter : IsoDateTimeConverter
{
    public DateFormatConverter(string format)
    {
        DateTimeFormat = format;
        DateTimeStyles = System.Globalization.DateTimeStyles.AssumeUniversal;
    }

Итак, я ожидал, что этот результат будет получен: 05/04/2019 02:39:33 PM +00: 00, спасибо всем, кто ответит мне!

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Может быть изменить DateParseHandling.DateTimeOffset на DateParseHandling.None?

0 голосов
/ 12 апреля 2019

Мне удалось получить ожидаемый результат путем изменения DateParseHandling = DateParseHandling.None в настройках сериализатора.

...