4

如果我有这个代码:

                DateTime dt = DateTime.UtcNow;
                string sDate = dt.ToString("yyyy-MM-dd HH:mm:ss.fff zz");

我的 sDate 看起来像这样:

"2013-04-07 21:05:15.396 +10"

这是当前的 UTC 日期时间(晚上 9:05),但末尾有一个“+10”,这是我的本地时区。

我本来预计会这样:

"2013-04-07 21:05:15.396 +00"

这是怎么回事?

4

2 回答 2

5

那是因为文档说(强调我的):

使用DateTime值,“zz”自定义格式说明符表示本地操作系统时区与 UTC 的有符号偏移量,以小时为单位。它不反映实例 DateTimeKind属性的值。因此,不建议将“zz”格式说明符与DateTime值一起使用。

因此,zz格式说明符始终输出本地时区的 UTC 偏移量,即使用于格式化 UTC 时间也是如此。

于 2013-04-07T21:17:28.107 回答
0

DateTime.ToString,当您不将 a 传递给CultureInfo它时,默认为当前文化。如果您当前的文化是 +10,那么这就解释了为什么您会看到 +10。您可以打开各种 FxCop 和代码分析规则,以便在您打电话时发出ToString警告CultureInfo

于 2013-04-07T21:15:57.103 回答