试图找到一个DateTime值,timeZoneInfo.IsAmbiguousTime(value)将返回“true”

时间:2016-06-03 12:32:34

标签: .net datetime

我正在尝试测试一些我正在测试timeZoneInfo.IsAmbiguousTime(value)的代码,该代码将返回true

我没有太多运气找到DateTime值:(

Checking some daylight savings info,它说,对于澳大利亚东海岸,夏令时在4月的第一个星期天结束。 2016年,这看起来像2016-04-03

  

它在4月的第一个星期日凌晨2点(夏令时间凌晨3点)结束,当时钟被放回一小时。

所以,我只是没有做到这一点 - 有人可以帮忙吗?

var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
var result = timeZoneInfo.IsAmbiguousTime(value);

1 个答案:

答案 0 :(得分:3)

但你自己给这样的价值!如果DST在当地时间2016-04-03 02:00结束,那么如果我们没有时区信息(特别是如果我们只知道它是当地时间,那么)那个特定的时间点(以及它之后的一小时)是不明确的不是DST是否有效):

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

请注意,即使我们将时间指定为UTC(2016-04-03 02:00 AEST是2016-04-02 16:00 UTC),也是如此。如果时间类型为Unspecified,则它将按原样使用(因此new DateTime(2016, 04, 03, 02, 00, 00, 0, DateTimeKind.Unspecified)被裁定为含糊不清),如果时间类型为Local,则将其解释为时间无论什么时区目前有效(对我来说,这在澳大利亚都不是。)