Ajust DateTime.现在用于另一个时区的服务器

本文关键字:时区 服务器 另一个 用于 DateTime Ajust | 更新日期: 2023-09-27 18:10:48

场景
我有一个在美国托管的应用程序,但它被亚洲的一家公司使用。显然,时区是不同的,系统的某些部分使用DateTime.Now来写日志和其他带有出现日期的东西。

问题
有没有办法取消DateTime.Now
(假设总是与服务器时钟相差+6小时(

如何获取本地日期时间(亚洲(,而不是服务器的日期时间(美国(?

PS :我对多个时区没有问题。只是一个,公司总部的时区

Ajust DateTime.现在用于另一个时区的服务器

处理全局操作的日期时间的最佳实践始终使用UTC格式存储所有数据,并且在显示时应根据客户端时区将其转换为本地日期时间

查看DateTimeOffsethttps://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110(.aspx

它表示相对于UTC的点时间。这是存储DateTime的好方法,因为它可能是从不同的时区生成的。

但是,您已经在使用DateTime.Now,您需要一个解决问题的方案。你可以这样转换时区(假设你想从亚洲[应用程序运行的地方]转换为欧洲(:

var convertedDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
    yourDateTime, TimeZoneInfo.Local.Id, "Pacific Standard Time");

请参阅https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11(.aspx来找到解决问题的确切时区。