У меня есть сценарий, в котором я хочу преобразовать даты UTC в строки ISO 8601 с определенным часовым поясом для отправки через веб-API. Рекомендуемый способ сделать это — использовать TimeZoneInfo следующим образом:
var configuredTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneString);
var localTime = DateTime.SpecifyKind(TimeZoneInfo.ConvertTimeFromUtc(utcTime, configuredTimeZone), DateTimeKind.Local);
var stringResult = localTime.ToString("o");
Это отлично работает на моем локальном компьютере, но я сталкиваюсь с очень странной ситуацией, когда ToString выводит другую строку, когда код размещен в веб-приложении Azure. Локально я получаю 2017-02-20T00:00:00-06:00 (это то, что я хочу, так как он содержит нужную мне информацию о часовом поясе), но при размещении в Azure я получаю 2017-02-20T00:00:00+ 00:00 (в формате UTC, а не то, что мне нужно). Поскольку я вручную применяю нужный часовой пояс, я не уверен, почему формат добавляет неправильную информацию о часовом поясе. Кто-нибудь сталкивался с этим раньше?
DateTime
не может сохранить часовой пояс. - person SLaks   schedule 23.02.2017