如何格式化日期时间或TimeZone/TimeZoneInfo显示三个字母?
-
20-09-2019 - |
题
我正在使用一个规格,该规范需要一种奇特的DateTime格式,我不一定必须使用该格式。
在过程时,必须以这样的格式盖上OFX(1不是2)DATETIME(DTCLIENT或DTSERVER):
20071015021529.000
但是,在示例中显示:
20071015021529.000[-8:PST]
我对第一个使用的语句没有问题
DateTime.Now.ToString("yyyyMMddHHmmss.fff")
我什至可以弄清楚如何获得 %z
要获得正确的偏移。
三个字母时区代码是我绊倒的地方。是否有一种简单的方法可以在.NET中获取此功能,或者我最终将编写代码以输出和解析我需要的内容?
解决方案
您需要确切找出所需的3个字母代码。什么会 Europe/Paris
例如?就个人而言,我将数据转换为UTC并以这种方式格式化,除非您实际需要保留时区信息。
其他提示
三个字母的时区代码在各个国家不是唯一的,也不是完全标准化的。例如,“ CST”可以是“中央标准时间(美国)”或“中国标准时间”的缩写。正确取决于您的语言环境。
据我所知,.NET框架中没有内置的功能来查找这样的代码,因此您需要自己实施。
此外(但您可能知道这一点),您需要注意如何实现此功能。 UTC偏移和时区代码之间不一定有一对一的对应关系。例如,UTC-0700可能是美国山区标准时间(MST) 或者 美国太平洋日光时间(PDT)。
如果您使用R,它将为您提供RFC格式。它会帮助您吗?
String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
你也可以 检查此链接, ,如果可以帮助您。
不隶属于 StackOverflow