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

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

我目前正在使用带有后端sql server数据库的c#web应用程序。我有一些问题需要解决日期。

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

在目前的代码中,我在SQL中使用DateTime.Now和GETDATE(),并且在服务器的位置,这是GMT。

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

c# sql datetime utc cultureinfo
1个回答
3
投票

创建时,一切都应该是UTC(不是服务器的时区; UTC),并在显示之前转移到用户的时区。

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

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

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

另请参阅MSDN上的Converting Times Between Time Zones

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