Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 正在尝试查找timeZoneInfo.isambiguustime(值)将返回'true'的日期时间值`_.net_Datetime - Fatal编程技术网

.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