如何在时区(UTC到EDT)之间转换时间?

She*_*tty 10 c# timezone

我需要有一个将UTC时间转换为EDT的通用功能.我在印度有一台服务器.其中的应用程序需要将EDT时间用于所有时间目的.

我使用的是.NET 3.5.

我在其他论坛上发现了这个.

DateTime eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
        DateTime.UtcNow, "Eastern Standard Time");
Run Code Online (Sandbox Code Playgroud)

当我尝试"Easten Daylight Time"时,我收到了一个错误.

"在本地计算机上找不到时区ID'东部夏令时'".

请帮助解决此问题或任何其他解决方案.

Jon*_*eet 24

东部夏令时不是"完整"时区的名称 - 它是时区的"一半",实际上总是落后于UTC 4小时.(可能有适当的术语,但我不知道.)

为什么要在没有应用夏令时的情况下使用EDT?如果您希望自定义时区始终与UTC具有相同的偏移量,请使用TimeZoneInfo.CreateCustomTimeZone.

请注意,如果您使用获取东部标准时区(TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),那么仍将适当地应用夏令时(即在夏季).

例如:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

// Prints True
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 6, 1)));
// Prints False
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 1, 1)));
Run Code Online (Sandbox Code Playgroud)

  • 波士顿在东部时间 - 夏季使用EDT.所以是的,使用FindSystemTimeZoneById("东部标准时间")是要走的路.我同意整个事情很混乱:( (2认同)