为什么ToUniversalTime函数在这里没有效果;
DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Local);
dt = dt.ToUniversalTime(); // convert BST to UTC ?
dt.ToString();
“24/03/2009 01:00:00”......错了?
与......相同。
DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Utc);
dt = dt.ToUniversalTime(); // nothing to do, already utc
dt.ToString();
“24/03/2009 01:00:00”......正确。
我希望对第一个示例的ToString()值进行调整,其中DateTime指定为Local会在调用ToUniversalTime()时导致相应的TimeZone计算,并且英国的时间应该有结果 “24/03/2009 00:00:00”为UTC。
然而,似乎以这种方式指定DateTimeKind会导致ToUniversalTime或ToLocalTime无法进行任何计算。
答案 0 :(得分:5)
你有机会在英国吗?虽然我们现在处于夏令时,但您在代码中指定的日期是在切换之前,因此英国的本地和UTC时间是相同的。如果您将四月指定为您的月份,那么您将看到一小时的差异。
答案 1 :(得分:0)
干杯大卫M. 没吃早餐。实际上,当我重复测试的日期超过BST夏令时阈值时,行为当然是正确的。
DateTime dt = new DateTime(2009,4,24,1,0,0,DateTimeKind.Local);
dt = dt.ToUniversalTime(); // convert BST to UTC ?
dt.ToString(); // "24/04/2009 00:00:00" ... correct
要确认,ToString()
方法似乎根据Kind属性输出。