Datetime 每个用户的默认时区,在业务逻辑中设置
我有一个应用程序,其中所有日期时间始终是服务器的时间。这意味着只有一个时区。其目的是使应用程序在全世界兼容。第一步是将数据库中存储的所有日期时间转换为UTC,这没有问题。第二步是假设用户的时区(基于业务逻辑),并将其用作显示和解析用户输入的默认时区。此外,如果像DateTime.Now这样的方法和其他在没有明确时区/区域信息的情况下构造datetimes的方法调用也假设这个时区/区域,那就更好了 其思想是从数据库中为用户假定一个时区。我有用户和他的时区,这没问题。Datetime 每个用户的默认时区,在业务逻辑中设置,datetime,timezone,globalization,business-logic,region,Datetime,Timezone,Globalization,Business Logic,Region,我有一个应用程序,其中所有日期时间始终是服务器的时间。这意味着只有一个时区。其目的是使应用程序在全世界兼容。第一步是将数据库中存储的所有日期时间转换为UTC,这没有问题。第二步是假设用户的时区(基于业务逻辑),并将其用作显示和解析用户输入的默认时区。此外,如果像DateTime.Now这样的方法和其他在没有明确时区/区域信息的情况下构造datetimes的方法调用也假设这个时区/区域,那就更好了 其思想是从数据库中为用户假定一个时区。我有用户和他的时区,这没问题。 问题在于表示逻辑。代码中到处都
问题在于表示逻辑。代码中到处都有DateTime.now方法,要转换所有这些方法需要大量的工作。
为了避免这种情况,我需要一个全局时区设置,DateTime知道它是哪个时区。最好在一般的地方
class business logic
InitializeCulture()
set time zone for user
end function
end class
class presentation logic
sample()
TimeOfTheCurrentUser = DateTime.now
end function
end class
如果您正在(或多或少)企业应用程序中寻找时区处理的最佳实践,我可以与您分享一个经过验证的实践:
DateTime
类转换为另一时区的本地时间,您可以使用class。有几种方法可以做到这一点DisplayName
显示的内容外部化(移动到资源文件),并让翻译人员执行其工作
还有一个简单的词,我所说的检测时区是什么意思。在胖客户端上,您只需读取本地时区即可:
TimeZoneInfo currentTimeZone = TimeZoneInfo.Local;
使用JavaScript(瘦客户端)并不是那么容易。唯一可以得到的是给定日期的时区偏移量(可能因日期和时间而异):
var date = new Date();
var offset = date.getTimezoneOffset(); // GMT offset in minutes
您的问题是什么?您使用什么语言/框架?问题:如何实现第二步“第二步是假设用户的时区(基于业务逻辑),并用作显示和解析用户输入的默认值。此外,如果像DateTime.Now和其他在没有明确时区/区域信息的情况下构造datetimes的方法调用也将假定此时区/区域,那就更好了。”语言/框架:VB.NET 3.5相关问题: