小编典典

如何在多国/语言应用程序中处理时区和日期

sql

我目前正在使用带有后端sql服务器数据库的ac#Web应用程序。我有一些需要解决的约会问题。

该应用程序在格林尼治标准时间(GMT)托管在Web和数据库服务器上。用户分布在CEST,MSK,ALMT的3个不同时区,有可能随着时间的推移将网站推广到其他国家/地区。

目前在代码中,我在SQL中使用DateTime.Now和GETDATE(),并随服务器位置一起使用,即GMT。

我的问题是,当考虑到不同的文化等时,日期戳应以什么形式存储在数据库中。应该是utc日期吗?以下应如何处理?有标准做法吗?


阅读 188

收藏
2021-04-22

共1个答案

小编典典

创建后,所有内容都应使用UTC(而不是服务器的时区; UTC),并在显示之前转移到用户的时区。

要使用UTC时间,请DateTime.UtcNow在Web服务器和GETUTCDATE()数据库上使用。

要将DateTime指定UTC时间的值转换为任何其他时区:

var dt = DateTime.UtcNow;
var tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var localTimeInNewYork = TimeZoneInfo.ConvertTimeFromUtc(dt, tz);

另请参阅MSDN上的时区之间转换时间

2021-04-22