ConvertTimeFromUTC,处理澳大利亚DST

时间:2018-01-08 16:48:17

标签: c# .net datetime timezone

我有以下代码,我在澳大利亚堪培拉有一位客户。它们通常是UTC + 10,但它们现在处于DST状态,因此它是UTC + 11。奇怪的是,当我运行此代码时,它不考虑DST,我认为ConvertTimeFromUTC处理。

我正在通过E. Australia Standard Time作为" timeZone"参数。有什么想法吗?

var myTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
var currentDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, myTimeZone);
return currentDateTime;

1 个答案:

答案 0 :(得分:3)

使用"AUS Eastern Standard Time"使用DST的东南澳大利亚(新南威尔士州和维多利亚州),包括堪培拉,墨尔本,悉尼等。

使用"E. Australia Standard Time"用于拥有DST的东北澳大利亚(昆士兰州),包括布里斯班,林德曼等。

否则,您的代码是正确的。

请注意,尽管时区ID中包含“标准”一词,但.NET和Windows将在适用的情况下正确地考虑DST。没有ID中包含“Daylight”一词。

要获取完整的时区列表,请使用TimeZoneInfo.GetSystemTimeZones()并检查每个时区的.Id.DisplayName属性。或者,在命令行上调用tzutil.exe /l,这将执行相同的操作。