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

Tod*_*son 2 .net c# formatting datetime ofx

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

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

但是,在示例中显示:

20071015021529.000[-8:PST]    
Run Code Online (Sandbox Code Playgroud)

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

DateTime.Now.ToString("yyyyMMddHHmmss.fff")
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*den 5

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

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

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