2011-02-03 49 views
1

我正在使用SQL Azure Silverlight應用程序。據我所知,如果DateTime種類未指定,Silverlight會將其更改爲Local,並且它會以UTC時間保存到Azure。如何處理Silverlight中的DateTime和TimeZone?

一切按預期工作,但是當我從SQL Azure獲得DateTime數據時,其種類爲Unspecified,並且Silverlight在UI上顯示時不會轉換回Local時間。

例如:我在羅馬(UTC +1)使用我的應用程序,我將日期設置爲15:00,然後保存到數據庫。在數據庫中它將保存爲14:00(UTC)。

現在我打開頁面編輯該數據,它從數據庫中查詢爲14:00,使用Unspecified類型,它也在頁面中顯示14:00,這顯然不正確。

我試着在DomainService(在將這些數據返回給客戶端之前)設置DateTime種類,方法是檢查它的類型是否未指定,將其設置爲UTC。這次,當我在頁面上更改DateTime時,它的類型始終是UTC。

好像Silverlight將轉換日期只有當它的種類爲Unspecified,否則什麼都不做,也不能轉換DateTime從數據庫中正確顯示即使是那些DateTime有種。

我想知道,有沒有解決方法或解決此問題?

回答

2

如果你知道它存儲在UTC,你有沒有嘗試設置日期時間,然後使用Silverlight明確轉換爲當地時間?我不熟悉Silverlight,但是在其他形式的.NET中,您必須爲UI操作明確進行此轉換。

DateTime dt = GetDateFromDB(); 

dt = dt.SpecifyKind(DateTimeKind.UTC); 

DateTime dtAsLocal = dt.ToLocalTime(); 
+0

我試圖做到這一點,它會正確地顯示在用戶界面,但是當我在UI更改日期時間,並保存到數據庫中,也不會從本地轉換爲UTC。例如,如果我在羅馬(UTC +1)將日期時間設置爲15:00:00,那麼它會將數據保存到15:00:00而不是14:00:00 – Anonymous 2011-02-04 02:35:02

相關問題