【问题标题】:ToLocalTime shows wrong timeToLocalTime 显示错误的时间
【发布时间】:2017-03-27 08:23:32
【问题描述】:

我在本地 PC 上的 IIS 中运行一个网站,我将日期保存为 UTC 并在前端 mvc 网站上调用 .ToLocalTime() 。如果我在本地 PC 上运行该网站,它会输出为 DST 调整的正确日期和时间。如果我在英国西部地区的 Azure 中运行它,我会落后 1 小时。直到今天这才成为问题,即周六时钟改变了。我需要向 Azure 提出票证吗?还是我做错了?

【问题讨论】:

  • 如果有帮助,请将其标记为答案,以帮助更多社区。​​span>

标签: asp.net-mvc azure-web-app-service


【解决方案1】:

Azure 应用服务器正在使用 UTC 时间。如果您的网站不只是针对英国的全球性网站。我们可以使用以下代码获取英国当地时间。

DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"); //UK time zone
DateTimeOffset  time = TimeZoneInfo.ConvertTimeFromUtc(utcNow, tz);
lab_time.Text = time.DateTime.ToString(CultureInfo.InvariantCulture); //display the datetime with label.

如果您的网站是全球性的,您可能需要使用 javascrpt 来执行此操作,更多详细信息请参阅另一个 SO Thread

【讨论】:

  • 是的,网站仅限英国,有没有我可以为整个应用程序全局设置它?
  • 正如我提到的,我们需要使用 javascript 来做到这一点。根据我的经验,我们无法从服务器后端获取全球本地时区。
【解决方案2】:

时区取决于服务器位置

我也遇到过同样的问题。我在新加坡有我的服务器,它曾经与我所在的地区印度发生冲突。

它也会影响时间和日期格式。

所以,Better not useToLocalTime()at the server 一边。只是get the UTC time from the serverconvert to 随便local time at the client 一边。问题已解决!

希望这会有所帮助。谢谢。

【讨论】:

  • 好的,但是我的服务器在英国,应该没问题吧?
  • 但是当时间改变时,我不知道他们在 Azure 做什么。而且,如果您的网站是全球性的,那将是一个问题!
  • 其实我不确定这是不是真的。我的英国 Azure 实例以 UTC 运行,我的 qa 和生产服务器(都在英国)在 GMT 运行,因此服务器位置不是问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2016-04-22
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多