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

时间:2015-09-02 13:49:39

标签: c# .net asp.net-mvc asp.net-mvc-4

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

问题
有没有办法调整DateTime.Now
(总是得+ 6小时与服务器时钟不同)

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

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

2 个答案:

答案 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以找到解决问题的确切时区。