.net 正在尝试查找timeZoneInfo.isambiguustime(值)将返回'true'的日期时间值`
我正在测试我得到的一些代码,这些代码正在测试一个.net 正在尝试查找timeZoneInfo.isambiguustime(值)将返回'true'的日期时间值`,.net,datetime,.net,Datetime,我正在测试我得到的一些代码,这些代码正在测试一个timeZoneInfo.isambiguustime(value),它将返回true 我很难找到DateTime值:( ,它说,对于澳大利亚东海岸,夏时制在4月的第一个星期日结束。2016年,这看起来像是2016-04-03 它在4月的第一个星期日凌晨2点(夏令时凌晨3点)结束,此时时钟被拨回1小时 所以,我只是没有弄清楚 var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("AUS Ea
timeZoneInfo.isambiguustime(value)
,它将返回true
我很难找到DateTime
值:(
,它说,对于澳大利亚东海岸,夏时制在4月的第一个星期日结束。2016年,这看起来像是2016-04-03
它在4月的第一个星期日凌晨2点(夏令时凌晨3点)结束,此时时钟被拨回1小时
所以,我只是没有弄清楚
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
var result = timeZoneInfo.IsAmbiguousTime(value);
但你自己给出了这样一个值!如果DST在当地时间2016-04-03 02:00结束,那么如果我们没有时区信息(特别是,如果我们只知道是当地时间,但不知道DST是否有效),那么该特定时间点(及其后一小时)是不明确的:
请注意,即使我们将时间指定为UTC(2016-04-03 02:00 AEST为2016-04-02 16:00 UTC),这也是正确的。如果时间类型是
未指定的,它将被视为原样(因此新日期时间(2016,04,03,02,00,00,0,DateTimeKind.未指定)
被裁定为不明确)如果时间类型是本地
,则它被解释为当前生效的任何时区中的时间(对我来说,在澳大利亚没有).为什么要这样做?目标是什么?嗯……我把日期时间“种类”值设置为未指定的。你把它设置为utc。嗯……你能解释一下当种类设置为utc时,日期/时间值是如何返回真的的吗?我想种类会d必须是本地的
或未指定的
(然后取本地的种类值..)好吧,你想错了,这就是为什么我故意使用Utc
——来证明API不在乎。它只回答了一个问题:如果我们没有时区信息,给定的时间点在请求的时区中是否会模棱两可。这就是为什么你可以提供Utc日期,但它仍然可以工作——它只需要校准计算出指定时区内的时间,然后判断含糊不清的问题。@Pure.Krome:更新了我的答案,希望能澄清问题。
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
var result = timeZoneInfo.IsAmbiguousTime(
new DateTime(2016, 04, 02, 16, 00, 00, 0, DateTimeKind.Utc)
);
Console.WriteLine(result); // True