C# 如何将UTC转换为澳大利亚东部夏时制(AEDT)?

C# 如何将UTC转换为澳大利亚东部夏时制(AEDT)?,c#,timezone,timezone-offset,C#,Timezone,Timezone Offset,我们正在从贸易伙伴的API下载数据。到目前为止,我们一直在与“澳大利亚东部标准时间”合作,工作情况良好 夏时制开始后,我们的贸易伙伴表示,他们正在与“澳大利亚东部夏时制(AEDT)”合作 我使用以下代码将UTC转换为“澳大利亚东部标准时间” 但当我使用“澳大利亚夏时制”或“澳大利亚东部夏时制(AEDT)”时,我会出现以下错误 我应该向FindSystemTimeZoneById()方法传递什么时区id才能正确转换为澳大利亚东部夏时制(AEDT)?您可能希望使用“澳大利亚东部标准时间”(适用于堪培

我们正在从贸易伙伴的API下载数据。到目前为止,我们一直在与“澳大利亚东部标准时间”合作,工作情况良好

夏时制开始后,我们的贸易伙伴表示,他们正在与“澳大利亚东部夏时制(AEDT)”合作

我使用以下代码将UTC转换为“澳大利亚东部标准时间”

但当我使用“澳大利亚夏时制”或“澳大利亚东部夏时制(AEDT)”时,我会出现以下错误

我应该向FindSystemTimeZoneById()方法传递什么时区id才能正确转换为澳大利亚东部夏时制(AEDT)?

您可能希望使用“澳大利亚东部标准时间”(适用于堪培拉、霍巴特、墨尔本和悉尼)。尽管名称中有“标准”一词,但这说明了夏令时,并在冬季使用UTC+10,在夏季使用UTC+11:

var tz = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");

TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2018,1,1,0,0,0,DateTimeKind.Utc), tz); 
    // => 01/01/2018 11:00:00
TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2018,7,1,0,0,0,DateTimeKind.Utc), tz); 
    // => 01/07/2018 10:00:00
“澳大利亚东部标准时区”适用于布里斯班,在那里他们不遵守夏令时


您可以使用该方法或通过运行命令行获得可用时区的完整列表。

嗯,您的第一个时区有一个输入错误。戴林?当然,我不知道它是否会更好。你不能使用一个不存在的时区。时区不指冬季或夏季时间。同一个时区在冬季或夏季有控制其偏移量的规则。为什么会有这个问题?如果您真的关心时区,请使用NodaTime库和<代码>澳大利亚/墨尔本比Windows时区名称清晰得多。IANA时区数据库和名称已成为事实上的标准。请遵循以下链接的公认答案:这是一个很好的例子,说明为什么应该使用NodaTime和IANA时区名称!非常感谢,我想我得到了答案。我还有一个问题。一旦白昼节光完成。。“澳大利亚东部标准时间”会给我标准时差(UTC+10:00)吗?@Yash正如Panagiotis所说,规则内置于时区信息中(检查对象的属性)。@Yash是的。时区包括定义时钟向前和向后设置时间的规则。转换的日期和时间将使用适当的标准或夏令时偏移。
The time zone ID 'E. Australia Daylight Time' was not found on the local computer.
The time zone ID 'Australian Eastern Daylight Time (AEDT)' was not found on the local computer.
var tz = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");

TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2018,1,1,0,0,0,DateTimeKind.Utc), tz); 
    // => 01/01/2018 11:00:00
TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2018,7,1,0,0,0,DateTimeKind.Utc), tz); 
    // => 01/07/2018 10:00:00