2010-09-17 74 views
1

我有以下情形:阅读DateTime对象

美国:数据库&应用服务器

欧洲:客户

服务器读取日期时间(例如12:00)从数据库中提取对象并将其发送给欧洲的客户端。现在的问题是,客户端在客户端的时区(例如18:00)中显示此日期时间,但我们需要数据库中的时间,而与服务器的时区无关。在客户端,我们不知道这个值来自哪个时区。

那么我们该如何实现呢?

+1

相关问题:http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-最佳做法 – Oded 2010-09-17 12:07:32

回答

1

难道你不能简单地使用DateTime.ToUniversalTime()

http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx

或者,如果你不想UTC,你可以找到你的服务器的时区,并做一些事情,如:

DateTime dt; 
TimeZoneInfo timezone_EST = 
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");  
DateTime dt_EST = TimeZoneInfo.ConvertTime(dt, timezone_EST); 
+0

这种方法的问题是,我将不得不迭代通过10k行的数据集表来做到这一点。 – Enyra 2010-09-17 12:20:18

0

如果你存储SQL DateTime数据2008年,看看新的datetimeoffset类型,它将存储时区信息以及日期和时间本身

+0

它不存储时区信息。它存储当时UTC的偏移量。那些*非常*不同的东西。给定一个UTC时间和一个时区,我会知道当地时间是五分钟后。给定UTC瞬间和偏移量,我不会。 – 2010-09-17 12:10:43

+0

不幸的是,它现在还不支持SQL 2005。 – Enyra 2010-09-17 12:18:46