为什么DateTime.ToString没有按预期给出时区

mcm*_*lab 4 c# datetime datetime-format

如果我有这个代码:

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

我的sDate看起来像这样:

"2013-04-07 21:05:15.396 +10"
Run Code Online (Sandbox Code Playgroud)

这是当前的UTC日期时间(晚上9:05),但结尾是"+10",这是我当地的时区.

我原以为这个:

"2013-04-07 21:05:15.396 +00"
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

Fré*_*idi 5

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

对于DateTime值,"zz"自定义格式说明符表示本地操作系统的时区与UTC的签名偏移量,以小时为单位.它不反映实例DateTimeKind属性的值 .因此,建议不要将"zz"格式说明符用于DateTime值.

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