我的Windows Web应用程序服务器设置为UTC,因此时区选择UI上没有DST的指示。因此,当我的c#代码在该服务器上运行时,DateTime.Now.IsDaylightSavingTime()
始终返回False。有没有办法检查特定时区(即东部时间)目前是否在夏令时?
感谢。
答案 0 :(得分:2)
DateTime.Now
是邪恶的,并且永远不会在服务器端代码中使用。在我关于此主题的博客文章中阅读更多内容:The Case Against DateTime.Now。仔细编码后,您的代码不应该关心服务器的时区设置。
您正在寻找:
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
bool dst = tz.IsDaylightSavingTime(DateTime.UtcNow);
不要让字符串"Eastern Standard Time"
欺骗你 - 这是美国东部时区的TimeZoneInfo.Id
,包括东部标准时间和东部夏令时。
答案 1 :(得分:1)
您可以使用TimeZoneInfo.GetSystemTimeZones()
获取所有时区的列表。它返回类型为TimeZoneInfo
的集合。当你找到合适的产品时,它会有一个属性SupportsDaylightSavingTime
来告诉你它是否完全使用DST。
之后,您可以致电IsDaylightSavingTime(DateTime)
查看DST是否在指定日期生效。