我有以下代码,我在澳大利亚堪培拉有一个客户。它们通常是 UTC+10,但它们现在处于 DST 状态,因此它是 UTC+11。奇怪的是,当我运行此代码时,它没有考虑DST,我认为ConvertTimeFromUTC处理DST。
我E. Australia Standard Time
传递为"时区"参数。有什么想法吗?
var myTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
var currentDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, myTimeZone);
return currentDateTime;
DST 的澳大利亚东南部(新南威尔士州和维多利亚州(使用 "AUS Eastern Standard Time"
,包括堪培拉、墨尔本、悉尼等。
将"E. Australia Standard Time"
用于没有 DST 的澳大利亚东北部(昆士兰州(,包括布里斯班、林德曼等。
否则,您的代码是正确的。
请注意,尽管时区 ID 中包含"标准"一词,但 .NET 和 Windows 将在适用的情况下正确考虑 DST。 没有包含"日光"字样的 ID。
有关时区的完整列表,请使用TimeZoneInfo.GetSystemTimeZones()
并检查每个时区的.Id
和.DisplayName
属性。 或者,在命令行上调用 tzutil.exe /l
,这将执行相同的操作。