【问题标题】:Globalization & Culture Settings on AzureAzure 上的全球化和文化设置
【发布时间】:2013-04-17 16:05:51
【问题描述】:

我们位于英国,并在 Azure 上部署了一系列 Web 服务。其中之一每 5 分钟自动刷新一次,并显示“上次刷新时间为 hh:mm:ss”消息。 这似乎没有考虑夏令时,因为显示的时间比当地时间晚一小时。我们怀疑它使用的是 UTC。我们已经尝试设置

<globalization uiCulture="en" culture="en-GB"/> 

在 web.config 中并以编程方式没有成功。 有没有比确定 DST 偏移量并在 'DateTime.Now()' 的每个实例中应用它更简单的解决方案来显示正确的本地时间?

提前感谢您的帮助。

【问题讨论】:

    标签: azure time localization culture


    【解决方案1】:

    在 Azure 门户中的应用程序设置下添加一个名为 WEBSITE_TIME_ZONE 的环境变量,其值为 W. Europe Standard Time

    其他值见:https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx

    【讨论】:

    • 这不会影响文化。只有时区。无论您做什么,都无法更改 WebApp 上的文化。它固定为 en-US。需要额外的努力来确保您的应用程序将所有日期时间字符串解析为您想要在代码中使用的文化。
    【解决方案2】:

    @viperguynaz 是正确的,所有 Azure 都在 UTC 上运行。如果你在 Azure 中运行,那么你应该让它在 UTC 中运行,而不是试图规避它,因为那时有些东西表现得不是很好。相反,作为一名软件开发人员,您应该在应用程序中添加遵守时区和处理保存为 UTC 的数据和运行在 UTC 上的服务的能力。永远不要使用DateTime.Now,而是始终使用DateTime.UtcNow

    有关这方面的更多信息,请参阅this question

    【讨论】:

      【解决方案3】:

      是 - Azure 在 UTC 时间运行。阅读DateTime.ToLocalTime MethodTimeZoneInfo.ConvertTime Method,了解如何获取已知时区的当地时间。

      【讨论】:

        【解决方案4】:

        我们有类似的英国特定情况,我们只需使用时区实用程序 tzutil 在一行“提升的简单”启动任务中设置时区:

        tzutil /s "GMT Standard Time"
        

        我们没有发现任何问题,时间戳始终符合我们的预期。这似乎比确保代码中的每个 DateTime 交互都支持本地时间/时区更简单。

        我相信此实用程序仅包含在 Windows Server 2008 R2 及更高版本的映像中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多