繁体   English   中英

如何格式化DateTime或TimeZone / TimeZoneInfo以显示三个字母?

[英]How do I format DateTime or TimeZone/TimeZoneInfo to display Three letters?

我正在使用一个规范,该规范需要一种特殊的日期时间格式,但我还没有必要使用它。

在处理时,必须以这样的格式标记OFX(1而不是2)日期时间(DTCLIENT或DTSERVER):
20071015021529.000

但是,在示例中显示:

20071015021529.000[-8:PST]    

我对使用声明的第一个没有问题

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

我甚至可以弄清楚如何获得%z来获得正确的偏移量。

三个字母的时区代码是我绊倒的地方。 有没有一种简单的方法可以在.net中获取它,或者我最终会编写代码来输出和解析我需要的东西?

三个字母的时区代码在各个国家/地区并不是唯一的,并且不是完全标准化的。 例如,“CST”可以是“中央标准时间(美国)”或“中国标准时间”的缩写。 哪个是正确的取决于您的语言环境。

据我所知,.NET Framework中没有内置功能来查找这样的代码,因此您需要自己实现它。

另外(但您可能知道这一点),您需要注意如何实现此功能。 UTC偏移和时区代码之间不一定存在一对一的对应关系。 例如,UTC-0700可以是美国山地标准时间(MST) 美国太平洋夏令时(PDT)。

如果您将使用r,它将为您提供RFC格式。 它会帮助你吗?

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

您也可以查看此SO链接 ,如果它可以帮助您。

您需要确切地找出它需要的3个字母代码。 例如, Europe/Paris给予什么? 就个人而言,我将数据转换为UTC并以这种方式格式化,除非您确实需要保留时区信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM