2

我正在使用一个规范,该规范需要一种特殊的 Datetime 格式,而我还没有必要使用这种格式。

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

但是,在示例中显示:

20071015021529.000[-8:PST]    

我对第一个使用以下语句没有问题

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

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

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

4

3 回答 3

5

三个字母的时区代码在各国之间不是唯一的,也不是完全标准化的。例如,“CST”可以是“Central Standard Time (USA)”或“Chinese Standard Time”的缩写。哪个正确取决于您的语言环境。

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

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

于 2009-10-06T19:56:25.607 回答
4

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

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

如果它可以帮助你,你也可以检查这个 SO 链接。

于 2009-10-06T20:02:28.250 回答
2

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

于 2009-10-06T19:54:38.237 回答