我知道System.TimeZone类以及DateTime.ToString()方法的许多用途。我找不到的是一种将 DateTime 转换为字符串的方法,该字符串除了时间和日期信息之外,还包含三个字母的时区缩写(实际上,与 StackOverflow 的相对工具提示大致相同)时间显示工作)。
为了让每个人都能轻松理解和使用示例,让我们继续 StackOverflow 示例。如果您查看显示相对时间的工具提示,它会显示完整日期、时间(包括 12 小时格式的秒数)、AM/PM 名称,然后是三个字母的时区缩写(在他们的情况下,协调世界时)。我意识到我可以通过使用内置方法轻松获取 GMT 或 UTC,但我真正想要的是本地时间——在本例中,是在 Web 服务器上。
如果我们的 Web 服务器正在运行 Windows Server 2k3 并且它的时区设置为 CST(或者,直到夏令时切换回来,CDT 是吗?),我希望我们的 ASP.NET Web 应用程序显示相对于该时区的 DateTimes以及格式化以在末尾显示“CST”。我意识到我可以很容易地对此进行硬编码,但出于稳健性的考虑,我真的更喜欢基于运行代码的操作系统环境设置的服务器的解决方案。
现在,除了时区缩写外,我使用以下代码拥有所有内容:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
其中显示:
2008 年 10 月 7 日下午 3:40:31
我想要的(这并不多,承诺!)就是让它说:
2008 年 10 月 7 日下午 03:40:31 CDT
我可以使用 System.TimeZone.CurrentTimeZone 并使用它来正确显示“Central Daylight Time”但是......为了简洁起见,这有点太长了。然后我是否坚持编写字符串操作例程来去除空格和任何非大写字母?虽然这可能有效,但对我来说这似乎令人难以置信......
谷歌搜索和查看这里并没有产生任何适用于我的具体问题的东西。