如何告诉DST服务器是否在UTC

本文关键字:UTC 是否 服务器 何告诉 DST | 更新日期: 2023-09-27 18:27:39

我的Windows web应用程序服务器设置为UTC,因此时区选择UI上没有夏令时或非夏令时的指示。因此,当我的c#代码在该服务器上运行时,DateTime.Now.IsDaylightSavingTime()总是返回False。有没有办法检查特定时区(即东部时间)当前是否处于夏令时?

谢谢。

如何告诉DST服务器是否在UTC

DateTime.Now是邪恶的,不应该在服务器端代码中使用。在我关于这个主题的博客文章中阅读更多:反对DateTime.Now的案例。通过仔细的编码,你的代码应该不在乎服务器的时区设置是什么。

你正在寻找这个:

TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
bool dst = tz.IsDaylightSavingTime(DateTime.UtcNow);

不要让字符串"Eastern Standard Time"欺骗了你——这是美国东部时区的TimeZoneInfo.Id,包括东部标准时间和东部夏令时。

您可以使用TimeZoneInfo.GetSystemTimeZones()获得所有时区的列表。它返回一个类型为TimeZoneInfo的集合。当你找到合适的一个时,它有一个属性SupportsDaylightSavingTime来告诉你它是否使用DST。

之后,您可以调用IsDaylightSavingTime(DateTime)查看DST是否在给定日期生效。