如何告诉DST服务器是否在UTC
本文关键字:UTC 是否 服务器 何告诉 DST | 更新日期: 2023-09-27 18:27:39
我的Windows web应用程序服务器设置为UTC,因此时区选择UI上没有夏令时或非夏令时的指示。因此,当我的c#代码在该服务器上运行时,DateTime.Now.IsDaylightSavingTime()
总是返回False。有没有办法检查特定时区(即东部时间)当前是否处于夏令时?
谢谢。
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是否在给定日期生效。