【发布时间】:2010-09-15 20:58:15
【问题描述】:
我知道System.TimeZone 类以及DateTime.ToString() 方法的许多用途。我找不到的是一种将 DateTime 转换为字符串的方法,该字符串除了时间和日期信息之外,还包含三个字母的时区缩写(实际上,与 StackOverflow 的相对工具提示大致相同)时间显示有效)。
为了让每个人都能轻松学习和使用示例,让我们继续 StackOverflow 示例。如果您查看显示在相对时间上的工具提示,它会显示完整日期、时间(包括 12 小时格式的秒数)、AM/PM 名称,然后是三个字母的时区缩写(在他们的情况下,协调世界时)。我意识到我可以通过使用内置方法轻松获取 GMT 或 UTC,但我真正想要的是本地时间——在本例中,是在 Web 服务器上。
如果我们的 Web 服务器运行的是 Windows Server 2k3 并且它的时区设置为 CST(或者,直到 daylight saving 切换回来,是 CDT 吗?),我希望我们的 ASP.NET Web 应用程序显示相对日期时间到那个时区,并格式化为最后显示“CST”。我意识到我可以轻松地对其进行硬编码,但出于稳健性的考虑,我真的更喜欢基于运行代码的操作系统环境设置的服务器的解决方案。
现在,除了时区缩写外,我使用以下代码:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
其中显示:
2008 年 10 月 7 日下午 3:40:31
我想要的只是(承诺不多!)就是让它说:
10/07/2008 03:40:31 PM CDT
我可以使用 System.TimeZone.CurrentTimeZone 并使用它来正确显示“Central Daylight Time”,但是......为了简洁起见,这有点太长了。然后我是否坚持编写字符串操作例程来去除空格和任何非大写字母?虽然这可能行得通,但对我来说这似乎令人难以置信......
Googling 并在此处查看并没有产生任何适用于我的具体问题的内容。
【问题讨论】:
-
我不敢相信在 2020 年,内置的 .NET 功能不可能做到这一点,而且我不敢相信这个问题收到了多少边缘毫无价值的回答。这是我第一次对每个答案都投了反对票。很好的问题,如果你找到真正的答案,我希望你能在这里发布!
标签: .net datetime formatting timezone tostring