当从东部时区服务器调用 asp.net (aspx) 页面时,中央时区机器的时区是什么
What will be timezone in central time zone machine, when a asp.net (aspx) page is called from eastern timezone server
我在东部时区有一个 SQL Server 2016,有一个存储过程,它调用了 GETDATE()
。 ASP.NET页面调用此存储过程; ASP.NET 应用程序部署在同样位于东部时区的服务器上。
如果用户从中部时区访问页面,将GETDATE()
检索并显示中部时区日期和时间,或东部时区日期和时间?
GETDATE()
在您的数据库服务器上执行,如果部署在东部时区,对于世界上任何地方的任何客户端(网络)应用程序,始终 returns 东部时间。
因此恕我直言,在处理多个时区时,最好选择仅在数据库中存储 UTC/GMT date/time 值,并让客户端转换并显示其本地 date/time。示例:
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(非本地)格式提交他们的日期时间值。但是使用这种方法可以让您将数据库服务器移动到整个不同的大陆,而不会出现客户端日期时间格式问题。
我在东部时区有一个 SQL Server 2016,有一个存储过程,它调用了 GETDATE()
。 ASP.NET页面调用此存储过程; ASP.NET 应用程序部署在同样位于东部时区的服务器上。
如果用户从中部时区访问页面,将GETDATE()
检索并显示中部时区日期和时间,或东部时区日期和时间?
GETDATE()
在您的数据库服务器上执行,如果部署在东部时区,对于世界上任何地方的任何客户端(网络)应用程序,始终 returns 东部时间。
因此恕我直言,在处理多个时区时,最好选择仅在数据库中存储 UTC/GMT date/time 值,并让客户端转换并显示其本地 date/time。示例:
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(非本地)格式提交他们的日期时间值。但是使用这种方法可以让您将数据库服务器移动到整个不同的大陆,而不会出现客户端日期时间格式问题。