ASP.NET / SQL时区之谜

时间:2009-07-28 01:29:46

标签: asp.net sql-server-2005 iis timezone gmt

设置:Windows Server 2003 / SQL Server 2005. ASP.NET 2.0。 IIS 6。

我正在处理的网站使用ASP.NET Membership,当用户创建时,它会被插入到aspnet_membership数据库中。

所有服务器都设置为中央时间。我还通过在SQL Server上执行Select GetDate()来验证这一点,并且它返回了中央时间。

但是,当用户插入aspnet_membership时,他们的CreateDate会在GMT中列出。 (格林威治标准)。

我查看了代码,并且在创建成员的任何地方都有 DateTime.Now.AddHours(6);

会员资格默认使用GMT吗?这可以在某处改变吗?使用GMT有什么好处吗?我没有在用户方面做任何时区细节,所以我认为不需要它。

无论如何,如果你对我所忽视的东西有任何想法,我将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用UTC(不是GMT)还有一个额外的好处,就是您不必担心夏令时。

如果你查看dbo.aspnet_Membership_CreateUser存储过程,你会发现一个@CurrentTimeUtc参数,这告诉我ASP.NET成员资格中的所有日期时间都是UTC。

您可以使用DateTime.ToLocalTime转换为本地(服务器)时间。

答案 1 :(得分:1)

会员资格会自动使用UTC,如本文所述: http://aspnet.4guysfromrolla.com/articles/041608-1.aspx