【问题标题】:Global change to timezone in application应用程序中对时区的全局更改
【发布时间】:2011-11-28 06:10:18
【问题描述】:

我有一个最近发布到 Web 服务器的 MVC3 应用程序。此服务器的时区与我的不同,这意味着此服务器上的 DateTime.Now 与我自己的不同。这也意味着网站上显示的所有时间对我来说都是错误的。

这个应用程序的用户群都生活在同一个时区,所以我正在寻找一种方法来覆盖服务器时区,并改用我自己的时区。

我真的不想只是根据差异增加或减少小时数,因为当夏令时发生时,这会搞砸。

【问题讨论】:

标签: c# datetime timezone


【解决方案1】:

您可以使用类似的方法将当前的 UTC 日期/时间转换为您的本地时间:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi);

只需将传递给TimeZoneInfo.FindSystemTimeZoneByIdId 更改为您的本地时区标识符。

【讨论】:

  • 不完全是我所希望的,但 TimeZoneInfo 的一些技巧给了我一个至少可以接受的解决方案。我会将您标记为已接受,因为它让我走上了正确的轨道:)
  • 我认为理想情况下,您需要一个解决方案,您可以只更改当前线程的 TimeZone,这意味着您不必在每次处理日期时都进行转换。但是,.NET 不支持这一点。
  • James - 是的,这就是我真正想要的。不,我必须将时间转换为我想向用户显示的所有地点。
  • 我的建议是在 DateTime 对象上使用扩展方法,或者创建一个静态类来为您进行转换,因为它将所有内容都保存在一个地方。
  • James - 这就是我最终所做的。扩展方法是最小的痛苦。
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 2020-02-19
  • 2012-01-25
  • 2016-07-09
  • 2012-12-12
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
相关资源
最近更新 更多