1

我们有一个 asp.net mvc 应用程序,它作为云服务托管在 windows azure 上。我们在存储日期时间时遇到问题。

该站点使用 Telerik 控件。

基本上,我们在弹出对话框中输入了一个开始日期时间字段和一个结束日期时间字段。如果我输入此字段,例如 31/08/2013 06:00 AM 开始和 31/08/2013 07:00 AM 结束然后按保存它显示在 Telerik 网格中,但它增加了 10 小时对于每个领域,我假设是因为我所在的澳大利亚布里斯班 + 10 小时。

然后我保存数据并将其存储在数据库中,时间为 + 10 小时。输入的时间与时区无关,我们只希望输入的任何时间都是输入的时间,无论用户在哪里等。

4

1 回答 1

2

Windows Azure datacenters run in UTC time zone. 这就是(正如您猜到的)您看到 10 小时时差的原因。一种可能的(也是推荐的)解决方案是在您的应用程序中始终使用 UTC 时间。这样,无论从何处访问您的应用程序,就日期/时间而言,您的应用程序都会获得一致的行为。在这种情况下,当用户输入任何日期/时间时,您假设它是 UTC。

您可以做的另一件事是将用户的时区传递给您的服务器端逻辑,并将用户提供的日期/时间转换为 UTC 时区。因此,如果来自澳大利亚的用户提供 31/08/2013 06:00 AM 的开始日期/时间,您还可以传递用户所在的时区,并且在服务器端,您将根据用户提供的日期将此日期/时间转换为 UTC /time 和用户的时区。

于 2013-08-17T07:41:53.493 回答