我们有一个asp.net mvc应用程序,它作为云服务托管在windows azure上。我们在存储日期时遇到问题。
该网站使用telerik控件。
基本上我们有一个开始日期时间字段和一个结束日期时间字段,我们在弹出对话框中输入。如果我输入此字段,例如31/08/2013 06:00 AM开始和31/08/2013 07:00 AM结束然后按保存显示在telerik网格中,但它已添加10小时对于每个领域,我都认为是因为布里斯班澳大利亚,我在那里是+ 10小时。
然后我保存数据并将其作为+ 10小时的时间存储在数据库中。输入的时间与我们只想要输入的时间无关的时区无关,无论用户在何处等等。
答案 0 :(得分:2)
<强> Windows Azure datacenters run in UTC time zone
即可。这就是原因(正如你猜测的那样)你会看到10小时的时差。一种可能的(和推荐的)解决方案可能是在您的应用程序中始终使用UTC时间。这样,无论您访问应用程序的位置如何,就日期/时间而言,您在应用程序中都会获得一致的行为。在这种情况下,当用户输入任何日期/时间时,您假定它是UTC。
您可以做的另一件事是将用户的时区传递到服务器端逻辑,并将用户提供的日期/时间转换为UTC时区。因此,如果来自澳大利亚的用户提供的开始日期/时间为2013年8月31日06:00 AM,您还可以通过时区用户在服务器端,您可以根据用户提供的日期将此日期/时间转换为UTC /时间和用户的时区。