Я знаю класс System.TimeZone, а также многие виды использования метод DateTime.ToString(). То, что я не смог найти, - это способ преобразования DateTime в строку, которая в дополнение к информации о времени и дате содержит трехбуквенную аббревиатуру Time Zone (фактически так же, как и всплывающие подсказки StackOverflow для относительных дисплей времени работает.)
Чтобы сделать пример простым для всех, чтобы следовать, а также потреблять, пусть продолжит пример StackOverflow. Если вы посмотрите на всплывающую подсказку, отображаемую в относительные моменты времени, она отобразится с полной датой, временем, включая секунды в двенадцатичасовом формате, обозначением AM/PM, а затем аббревиатурой трехбуквенного времени (в их случае, скоординированной Универсальное время). Я понимаю, что могу легко получить GMT или UTC, используя встроенные методы, но я действительно хочу, чтобы время было локально — в этом случае на веб-сервере.
Если наш веб-сервер работает под управлением Windows Server 2k3 и имеет часовой пояс, установленный в CST (или до тех пор, пока летнее время не вернется, CDT это?), я хотел бы, чтобы наше веб-приложение ASP.NET отображало DateTimes относительно этого часового пояса, а также отформатировано для отображения "CST" в конце. Я понимаю, что я мог бы легко жестко закодировать это, но в интересах надежности я бы предпочел решение, основанное на сервере, на котором установлены настройки среды ОС кода.
Сейчас у меня есть все, кроме аббревиатуры часового пояса, используя следующий код:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
Что отображается:
10/07/2008 03:40:31 PM
Все, что я хочу (и это не много, обещаю!) для этого сказать:
10/07/2008 03:40:31 PM CDT
Я могу использовать System.TimeZone.CurrentTimeZone и использовать его для правильного отображения "Центральное дневное время", но... это слишком долго для краткости. Я тогда застрял в написании строковой процедуры манипуляции, чтобы вырезать белое пространство и любые буквы, отличные от прописных? Хотя это может сработать, это кажется невероятным взломом для меня...
Googling и оглядываясь здесь не принесло ничего, что применимо к моему конкретному вопросу.