дата и время для строкового представления с часовым поясом

Мне сохранили DateTime во всемирное время (UTC) значения 01.01.2010 1:01:01.

Я хотел бы отобразить его в EST в этом формате 2010-01-01 4:01:01 GMT-04:00, однако средство форматирования 'K' для часового пояса не работает в ToString

46
задан Comma 23 July 2010 в 23:57
поделиться

3 ответа

Используйте спецификатор формата "zzz" для получения смещения UTC. Например:

        var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc);
        string s = dt.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss \"GMT\"zzz");
        Console.WriteLine(s);

Вывод: 2009-12-31 19:01:01 GMT-06:00

Я нахожусь в часовом поясе CDT. Убедитесь, что DateTime однозначно DateTimeKind.Utc.

64
ответ дан 26 November 2019 в 20:29
поделиться

Я думаю, вы ищете класс TimeZoneInfo (см. http://msdn.microsoft.com/en-us/library/system.timezoneinfo_members. aspx ). Он имеет множество статических методов для преобразования дат между часовыми поясами.

1
ответ дан 26 November 2019 в 20:29
поделиться

Что-то вроде этого работает. Вероятно, вы можете очистить его немного больше:

string newDate = string.Format("{0:yyyy-MM-dd HH:mm:ss} GMT {1}", dt.ToLocalTime(), dt.ToLocalTime().ToString("%K"));
5
ответ дан 26 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: