0

My Windows web application server is set at UTC so there is no indication of DST or not on the timezone selection UI. So when my c# code is running on that server, DateTime.Now.IsDaylightSavingTime() always returns False. Is there a way to check to see if a particular time zone (i.e. Eastern Time) is currently in DST or not?

thanks.

4

2 回答 2

2

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

你正在寻找这个:

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

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

于 2013-08-15T01:38:53.197 回答
1

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

之后,您可以致电IsDaylightSavingTime(DateTime)查看 DST 在给定日期是否有效。

于 2013-08-15T00:53:18.470 回答