Как форматировать DateTime или Timezone/Timezoneinfo, чтобы отобразить три буквы?

StackOverflow https://stackoverflow.com/questions/1527706

Вопрос

Я работаю со спецификацией, которая требует особого формата DateTime, с которым мне еще не обязательно работали.

Во время процесса OFX (1 не 2) DateTime должен быть отпечатан (DTClient или DtServer) в таком формате, как это:
20071015021529.000

Однако в примерах это показано:

20071015021529.000[-8:PST]    

У меня нет проблем с первым, используя заявление о

DateTime.Now.ToString("yyyyMMddHHmmss.fff")

Я даже могу понять, как получить %z Чтобы получить правильное смещение.

Трех буквенного кода часового пояса - это то, где я спотыкаюсь. Есть ли простой способ получить это в .NET, или я собираюсь написать код, чтобы вывести и разобрать то, что мне нужно?

Это было полезно?

Решение

Вам нужно выяснить, какие именно 3 буквенных кода ему нужны. Что будет Europe/Paris Дайте, например? Лично я бы преобразовал данные в UTC и форматировал их таким образом, если только вам не нужно сохранить информацию о часовом поясе.

Другие советы

Трехбуктные коды часовых поясов не являются уникальными по странам и не полностью стандартизированы. Например, «CST» может быть аббревиатурой для «центрального стандартного времени (США)» или «китайского стандартного времени». Что правильно, зависит от вашего локали.

Насколько мне известно, нет функциональности, встроенной в фреймворк .NET для поиска подобных кодов, поэтому вам нужно будет реализовать его самостоятельно.

Кроме того (но вы, вероятно, знаете это), вы должны быть осторожны с тем, как вы реализуете эту функциональность. Существует не обязательно соответствие между смещением UTC и кодами часовых поясов. Например, UTC-0700 может быть либо US Mountain Standard Time (MST) или же US Pacific Daylight Time (PDT).

Если вы будете использовать R, это даст вам формат RFC. Поможет ли это вам.

String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123

Вы также можете Проверьте это, так что ссылка, если это может вам помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top