2010-09-17 134 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