datetime для строки с часовым поясом - PullRequest
43 голосов
/ 24 июля 2010

У меня есть DateTime, сохраненное в универсальном времени (UTC) со значением 2010-01-01 01: 01: 01 .

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

Ответы [ 5 ]

57 голосов
/ 24 июля 2010

Используйте спецификатор формата "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.

4 голосов
/ 14 марта 2018

Если вам, как и мне, нужен такой формат, как 2018-03-31T01:23:45.678-0300 (без двоеточия в части часового пояса), вы можете использовать это:

datetime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz").Remove(26,1)
4 голосов
/ 24 июля 2010

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

string newDate = string.Format("{0:yyyy-MM-dd HH:mm:ss} GMT {1}", dt.ToLocalTime(), dt.ToLocalTime().ToString("%K"));
3 голосов
/ 10 марта 2016

Этот метод вернет указанное время в восточном стандартном времени (как вопрос), , даже если EST не местный часовой пояс :

public string GetTimeInEasternStandardTime(DateTime time)
{
    TimeZoneInfo easternStandardTime = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    DateTimeOffset timeInEST = TimeZoneInfo.ConvertTime(time, easternStandardTime);
    return timeInEST.ToString("yyyy-MM-dd hh:mm:ss tt\" GMT\"zzz");
}

Примечание: у меня естьне проверял это в неанглийской ОС.См. Документацию MSDN по TimeZoneInfo.FindSystemTimeZoneById .

.
1 голос
/ 24 июля 2010

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

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