当从东部时区服务器调用asp.net(aspx)页面时,中央时区机器中的时区将是什么

问题描述 投票:0回答:1

我在东部时区有一个SQL Server 2016,并且有一个存储过程,并且它对GETDATE()进行了调用。 ASP.NET页调用此存储过程; ASP.NET应用程序也部署在东部时区的服务器上。

如果用户从中部时区访问页面,GETDATE()是否将检索并显示中部时区日期和时间或东部时区日期和时间?

sql-server datetime getdate
1个回答
0
投票

[GETDATE()在您的数据库服务器上执行,如果在东部时区中部署,则始终将东部时间返回给世界任何地方的任何客户端(网络)应用程序。

因此,恕我直言,在处理多个时区时,最好选择仅在数据库中存储UTC / GMT日期/时间值,并让客户端进行转换并显示其本地日期/时间。示例:

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand cmd = new SqlCommand("SELECT GETUTCDATE() AS UTC", connection);
        using (SqlDataReader sqlDataReader = cmd.ExecuteReader())
        {
            while (sqlDataReader.Read())
            {
                DateTime utcFromDatabase = (DateTime)sqlDataReader["UTC"];
                DateTime mylocalTime = utcFromDatabase.ToLocalTime();
                myLabel.Text = string.Format("UTC:{0}, Local:{1}", utcFromDatabase, mylocalTime);
            }
        }
    }

显然,您不应该让客户也将其日期时间值提交为UTC(而不是本地)。但是,使用这种方法可以使您将数据库服务器移动到整个不同的大陆,而不会出现客户端日期时间格式问题。

© www.soinside.com 2019 - 2024. All rights reserved.