Как настроить json-сериализатор веб-API для преобразования даты и времени в формат ISO 8601?

Я работаю над проектом веб-API, и в моем классе WebApiConfig я добавил эту конфигурацию для преобразования параметров даты и времени в формат ISO 8601:

  IsoDateTimeConverter converter = new IsoDateTimeConverter
        {
            //DateTimeStyles = DateTimeStyles.AdjustToUniversal,
            DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"
        };

     config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(converter);

Но если я передам это значение 2018-01-21T21:00:00.000Z со стороны внешнего интерфейса, оно не преобразует его правильно в 2018-01-22 00:00:00.000< /сильный>

Итак, что не так с моей конфигурацией?


person Simple Code    schedule 14.01.2018    source источник
comment
Почему это должно быть преобразовано в эту дату? Вы передаете строку DateTime с часовым поясом (zulu, он же UTC).   -  person rene    schedule 14.01.2018


Ответы (1)


Не нужно использовать IsoDateTimeConverter, просто выполните:

var strDate = Convert.ToDateTime("2018-01-21T21:00:00.000Z").ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'", System.Globalization.CultureInfo.InvariantCulture);

это даст вам 2018-01-22T00:30:00.000Z, как я тестировал в качестве вашего строкового формата.

но вы можете изменить формат ;ike "yyyy'-'MM'-'dd' 'HH':'mm':'ss"

person Aria    schedule 14.01.2018
comment
Спасибо за ответ, но я хочу настроить сериализатор json глобально. - person Simple Code; 14.01.2018