方案
我在美国有一个应用程序,但它被亚洲的一家公司使用。显然时区是不同的,系统的某些部分使用DateTime.Now
来写日志和其他具有发生日期的东西。
问题
有没有办法调整DateTime.Now
?
(总是得+ 6小时与服务器时钟不同)
如何获取本地DateTime(亚洲),而不是服务器的日期时间(美国)?
PS :我没有多个时区的问题。只是一个,公司总部的时区。
答案 0 :(得分:5)
处理全局操作的日期时间的最佳做法始终使用UTC
格式存储所有数据,并且显示时应根据客户端时区将其转换为本地日期时间
答案 1 :(得分:3)
查看DateTimeOffset https://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110).aspx
它表示相对于UTC的点时间。当可以从不同的时区生成DateTime时,它是存储DateTime的好方法。
但是,您已经在使用DateTime.Now
,并且需要解决问题的方法。你可以像这样转换时区(假设你想从亚洲[应用程序运行的地方]转换为eua):
var convertedDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
yourDateTime, TimeZoneInfo.Local.Id, "Pacific Standard Time");
请参阅https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx以找到解决问题的确切时区。