Формат смещения времени с названиями городов в C# - PullRequest
0 голосов
/ 09 июля 2020

Есть ли способ форматирования такого смещения времени, используя c#?

07:53:21 GMT+0200 (Central European Summer Time)

Вот что я пробовал:

public string BuildHourMinute(DateTime time)
{
    string format = "H:mm (zzzz)";
    return time.ToString(format, CultureInfo.InvariantCulture);
}

Примечание: значение времени отличается от местного времени. С этим я получаю:

13:00 (+02:00) 

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Вы можете использовать свойство DaylightName из класса TimeZoneInfo и строку формата HH:mm:ss 'GMT'zzz для правильного представления

public string BuildHourMinute(DateTime time)
{
    return $"{time:HH:mm:ss 'GMT'zzz} {TimeZoneInfo.Local.DaylightName}";
}

Здесь важно поместить GMT в одинарные кавычки, иначе M будет рассматриваться как спецификатор формата месяца.

Другой вариант - использовать свойство DisplayName, но вам все равно нужен доступ к TimeZoneInfo объекту

public string BuildHourMinute(DateTime time)
{
    return $"{time:HH:mm:ss} {TimeZoneInfo.Local.DisplayName}";
}
1 голос
/ 09 июля 2020

in toString() для DateTime:

  1. HH означает часы

  2. мм для минут

  3. ss для секунд

  4. zzz, чтобы наконец получить BaseUtcOffset, чтобы получить регион с дневным освещением, вы должны использовать

    TimeZoneInfo.Local.DaylightName
    

итоговый статус должен выглядеть так:

   timeAsWanted = DateTime.Now.ToString("HH:mm:ss GMT(zzz)") + TimeZoneInfo.Local.DaylightName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...