我有以下代码,我在澳大利亚堪培拉有一位客户。它们通常是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;
答案 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
,这将执行相同的操作。