如何告知DST服务器是否为UTC

时间:2013-08-15 00:36:11

标签: c# timezone dst

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

感谢。

2 个答案:

答案 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是否在指定日期生效。