2014-03-25 66 views
0

我有一個Lotus Domino服務器坐在CET/CEDT。LotusNotes DateTime對象和時區物業

該服務器上的電子郵件有DeliveredDate,也許在同一個時區,也許不是,但我們把它設置爲2014-03-01 11:01:38 CET

我有第二件事是另一個時區的一些「經典時區字符串」,讓我們說Z=-4$DO=0$...$ZN=Arabian

我怎樣才能 - 在LotusScript ServerTask - 在DeliveredDate轉換爲通過上述時間段所代表的時區串?

如果一些的LotusScript servertask把該日期爲NotesDateTime對象,我可以得到性能LSLocalTime,這是CET,LSGMTTime,這是GMT,而ZoneTime,這當然也返回CET。功能包括ConvertToZone,其不採取一個字符串,和未記錄的merge,這改變了時間,使得11:01 CET變爲11:01 AST(8:01 CET)。

但2014年3月1日11:01 CET的交付日期應該成爲2014年3月1日14:01 AST;
和交付日期2014-04-01 11:01 CEDT應成爲2014-04-01 13:01 AST。

怎麼樣?

+1

該時區字符串從哪裏來?什麼是格式?這不是我以前見過的。據我所知,LotusScript語言或Domino對象沒有任何東西可以解釋這樣的字符串 - 但是如果你更多地解釋它,這裏的某個人可能會提出一些建議。順便說一下:ConvertToZone方法的侷限性在於,它只考慮夏令時時間規則用於轉換區域,而不是轉換後的區域,而這僅僅是一個相當重要的問題。 –

+0

字符串(以所謂的「規範時區格式」)取自用戶配置文件。 – Alexander

+0

嗯...有趣。似乎是IBM的發明。這裏記錄:http://www-01.ibm.com/support/docview.wss?uid=swg21163045我不知道支持它的公共API中的任何功能,即使它編碼DST信息我提到的限制上面的ConvertToZone使它沒有那麼有用。我很希望這是一種基於標準的格式,在Java中得到了支持,所以你可以通過LS2J調用一些有用的函數。 –

回答

1

Notes公式語言有一個功能,你想要做什麼。它被稱爲@TimeToTextInZone。根據this developerWorks thread,在LotusScript中沒有等價物。但是,您可以嘗試使用NotesSession.Evaluate()@TimeToTextInZone結合使用。

0

它看起來像該字符串包含了區和DST參數ConvertToZone值,這樣你可以分析它,並使用該方法,對嗎?我錯過了什麼嗎?

+1

Andre,規範字符串告訴您UTC的基準偏移,併爲您提供觀察DST(如果適用)的規律。它不會立即告訴您是否在特定日期觀察到DST。爲此,您必須評估DST法律。我認爲亞歷山大正在努力避免這種情況。 –