我认为这是正确的方法,但显然不是。
我使用默认的 GetUtcDate()将日期写入SQL Server数据库。
我在ASP.NET中阅读它并使用 theTime.ToLocalTime()将其显示给用户。 (它已经在UTC中了,所以我需要将它转换为本地时间,而不是再转换为UTC时间。)
不会使世界上任何地方的日期/时间显示正确吗?
但是在以下时间似乎是1小时:
SQL Server位于1个时区(可能是......或者不在DST区域或一年中的时间)。
运行ASP.NET的Web服务器位于不同的时区(也可能是DST,也可能不是DST)。
查看日期/时间的本地用户也处于一个完全不同的时区(也有或没有DST)。
(我不确定它是否重要,但网络服务器只有.net v1.1,并且永远不会升级到v2或其他任何东西。)
答案 0 :(得分:1)
使用GETUTCDATE
存储UTC值很好。将UTC值检索到Web服务器上的DateTime
对象中也没问题。调用ToLocalTime
不是。
使用ToLocalTime
时,您正在使用运行代码的计算机的本地时区 。在这种情况下 - 您的Web服务器。
网络服务器完全不知道您的用户的时区。您必须在应用程序逻辑中自行管理。由于您坚持使用.Net 1.1,因此您无法轻松管理此服务器端。您必须采用客户端JavaScript方法:
2014-06-10T09:30:00.000Z
。您可以使用DateTime
。.ToString("o")
对象中获取此信息
Date
对象的构造函数。但是,您可能更喜欢使用更强大的库来实现浏览器兼容性和增强的格式化功能。我推荐moment.js。Date
或moment
对象上的任何输出方法都会自动显示转换为用户时区的时间。有很多服务器端方法,但它们需要您更新到更合理的.NET Framework版本。
使用任何服务器端机制,您都需要将应用程序更改为:
此外,您应该认识到.NET 1.1是在2003年发布的,并且方式超过其生命周期结束日期。您应该查看the chart here并考虑升级。