如何处理全球应用程序的日期时间。UTC/GTM/夏令时

4

我正在开发一个应用程序,面向的受众来自全球各地。我的开发平台是ASP.Net/Sql Server,目前它们都托管在同一台专用服务器上。

有可能将Sql Server移动到不同的服务器上,并将Web应用程序托管到不同的服务器上。两个服务器的时区可能不同。

目前我们正在开发阶段,并需要处理通用日期时间概念,而不是在后期进行争论。

我们的数据库当前结构如下所示,包含以下类型的datetime列:

DateTime(mm/dd/yyyy hh:MM:ss), SmallDateTime(仅保留日期部分mm/dd/yyyy 12:00:00), Varchar(仅保存24小时格式的hhMMss)

目前我们直接保存Sql Server的GetDate()C#的DateTime.Now(即ASP.NET)、javascript datetime和任何其他日期。目前没有应用UTC转换或类似的功能。我们也没有存储任何时区或偏移量。

当我需要:

  • 从UI调用存储过程将DateTime保存到数据库中

  • 从存储过程向UI显示数据

  • 从ASP.NET服务器向客户端浏览器显示数据

  • 从客户端浏览器保存数据到ASP.NET服务器

请为每种情况提供一些代码示例,包括夏令时。


相关问题:https://dev59.com/U3E85IYBdhLWcg3w8IbK - Oded
1个回答

0

我在一家业务遍布全球的公司工作,我们将所有日期存储为UTC时间。

基本上,在你的SQL中,你必须使用GETUTCDATE()函数而不是GETDATE()函数,在C#中,你要使用DateTime.UtcNow而不是DateTime.Now。

数据库字段可以是标准的datetime类型。

如果你不知道或无法确定客户端的本地设置,你可以以yyyy/MM/dd格式显示日期。


你是如何处理夏令时的? - Shantanu Gupta
有些国家遵守,有些不遵守。在同一个国家内,一些市镇遵守,而另一些则不遵守。在许多国家,这是地方决定。在美国,一些州不遵守。切换日期也各不相同。你不能仅根据国家名称或坐标来做出决定。 - Eugene Z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接