我正在尝试测试一些我正在测试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);
答案 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
,则将其解释为时间无论什么时区目前有效(对我来说,这在澳大利亚都不是。)