2009-02-25 50 views
1

將日期時間保存到數據庫之前不久我將DateTime投射到OracleTimeStampTZ中。 這將DateTime轉換爲當前時區中的OracleTimeStampTZ,這很酷,這正是我想要的。除了時區被表示爲時間設置(+13,因爲我在新西蘭)。將日期時間投射到OracleTimeStampTZ

現在我有點害怕這會咬我的屁股關於夏令時。我寧願將OracleTimeStampTZ.TimeZone表示爲命名時區(因此也是數據庫中的命名時區)。

爲了一致性我想使用由.NET(IE使用TimeZoneInfo.Local)確定的時區。

問題是TimeZoneInfo似乎沒有包含與oracle時區名稱匹配的時區名稱。另外,OracleTimeStampTZ.TimeZone屬性是隻讀的。

任何人都知道一個很好的實現方式嗎?

在此先感謝

==編輯解釋我對DST ==擔憂

OK,就是我擔心的是以下幾點: 說我現在保存日期在數據庫中的事件發生在從現在開始的一年半(無論如何都是夏時制的另一側)。

說我保存的日期/時間是16:00 +13。當我們到達夏時制的另一邊時,我國的偏移量可能是+12,這意味着在我當地的時區中,我先前保存的日期被認爲是15:00,因爲我的偏移量已更改,但已存儲的日期沒有。

根據我的理解,如果存儲了指定的時區,那麼當我們在夏令時的另一側評估日期時,我們可以根據是否爲夏令時確定正確的偏移量。

我描述的正確嗎?

+0

當然,如果我可以使默認的DateTime轉換爲OracleTimeStampTZ,並使用指定的時區,我也會很高興。 – tobyc 2009-02-25 04:04:50

回答

0

我在想你可能是好的。你能爲你擔心的問題畫一個用例嗎? IIRC,甲骨文是知道夏時制的,並且(自從日期被存儲以來)我不確定你會如何失去信息 - 你會知道夏時制是否有效,對嗎?

- MarkusQ

所以我想嘗試是節省這樣的日期和看到的偏移它的第一件事。換句話說,用於時區的數字偏移量可能(正確)是日期的函數。

我想另一種選擇是,如果這不起作用,將保存在枚舉列中的時區名稱,並根據需要重建時間。不漂亮,但...

+0

我編輯了我的問題來詳細闡述一點。 – tobyc 2009-02-25 20:19:20