Как мне отформатировать DateTime или TimeZone / TimeZoneInfo для отображения трех букв? - PullRequest
2 голосов
/ 06 октября 2009

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

Во время обработки дата и время OFX (1, ​​а не 2) должны быть помечены (DTCLIENT или DTSERVER) в таком формате: +20071015021529,000

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

20071015021529.000[-8:PST]    

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 06 октября 2009

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

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

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

4 голосов
/ 07 октября 2009

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

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

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

2 голосов
/ 06 октября 2009

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

...