【发布时间】:2014-10-06 10:27:44
【问题描述】:
我在英国(目前是 GMT+1 时间)。
如果我运行这个:
> DateTime.UtcNow.ToString("R") // Or...
> DateTime.Now.ToUniversalTime().ToString("R")
"Mon, 06 Oct 2014 10:20:00 GMT"
正确答案。
如果我现在运行相同,没有 UTC DateTime 转换:
> DateTime.Now.ToString("R")
"Mon, 06 Oct 2014 11:20:00 GMT"
打印的时间正确,但时区错误。我希望相反:
"Mon, 06 Oct 2014 11:20:00" // Or..
"Mon, 06 Oct 2014 11:20:00 BST"
问题:这种行为是设计使然吗?我能否获得与“R”格式相同的输出,但使用正确的时区指示符?
【问题讨论】:
-
"11:20 GMT" 是不正确的,假设您在 9 分钟前这样做了。现在是英国夏令时 11:20,也就是格林威治标准时间 10:20。第二个输出是正确的。
-
@JonSkeet 是的,你是对的。问题应该反过来。更正...
-
值得澄清的是,正如您在问题中所述,目前英国 不是 GMT 时区。英国有两个时区,GMT 和 BST。 GMT 与 UTC 相同,但在夏天说英国时区是 GMT 是不正确的。
-
@Chris,谢谢,已修改。
-
@Chris:在大多数表示中,英国有一个时区(例如“欧洲/伦敦”),它在一年中的不同时间观察到不同的 UTC 偏移量和缩写。我不知道“半时区”(例如 BST)的好名字,但我不会称它为时区。不,我根本不相信这是一个“事物名称不同”的问题 - 请参阅我的答案和文档。