【发布时间】:2019-04-25 07:55:25
【问题描述】:
我们正在从我们的贸易伙伴的 API 下载数据。到目前为止,我们一直在使用“E. Australia Standard Time”,并且运行良好。
夏令时开始后,我们的贸易伙伴表示他们正在使用“澳大利亚东部夏令时间 (AEDT)”。
我使用以下代码将 UTC 转换为“东澳大利亚标准时间”。
DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo objTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time");
DateTime TPDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, objTimeZoneInfo);
但是当我使用“E. Australia Daylight Time”或“Australian Eastern Daylight Time (AEDT)”时出现以下错误
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.
我应该将什么时区 ID 传递给 FindSystemTimeZoneById() 方法才能正确转换为澳大利亚东部夏令时间 (AEDT)?
【问题讨论】:
-
嗯,你的第一个有错字。代林?当然,我不知道它是否会更好地工作。
-
您不能使用不存在的时区。时区不指的是冬季或夏季时间。 same 时区有规则在冬季或夏季控制其偏移。
-
为什么要问这个问题?你在
"E. Australia Standard Time"上打错时间了吗? -
@Yash 顺便说一句,如果您真的关心时区,请使用 NodaTime 库和 IANA timezone names。
Australia/Melbourne比 Windows 时区名称更清晰。 IANA 时区数据库和名称已成为事实上的标准 -
按照以下链接接受的答案:TimeZoneInfo.ConvertTime from PST to UTC to AEST
标签: c# timezone timezone-offset