场景
我有一个应用程序托管在美国,但它是由一家公司在亚洲使用。显然,时区是不同的,系统的某些部分使用DateTime.Now编写日志和其他内容。
问题
有没有办法让DateTime.Now
(假设总是得到+6小时与服务器时钟不同)
如何获得本地DateTime (亚洲),而不是服务器(美国)的日期时间?
PS__:我对多个时区没有问题。只是公司总部的时区之一。
发布于 2015-09-02 13:58:12
处理全局操作的日期时间的最佳实践是始终使用UTC格式存储所有数据,并且在显示数据时应根据客户端时区将其转换为本地日期时间。
发布于 2015-09-02 14:09:09
看看DateTimeOffset https://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110).aspx
它代表了一个相对于UTC的点时间。当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以找到解决问题的确切时区。
https://stackoverflow.com/questions/32355044
复制相似问题