2009-09-05 66 views
1

我需要從形式的Unix的TZ環境變量轉換:TZ Var到Java TimeZone?

stdoffset[dst[offset][,start[/time],end[/time]]] 

到Java TimeZone對象。

例如,將AEST-10AEDT-11,M10.1.0/02:00:00,M4.1.0/03:00:00轉換爲表示「Australia \ Sydney」的Java TimeZone對象。在我自己寫代碼之前,我想知道我沒有再發明輪子,所以有人知道是否有一個庫已經可用,可以做到這一點?

回答

3

寫這樣一個轉換程序真的很難。在Unix上,您可以擁有自定義的日光規則,Java不提供此類功能。可以通過tzfile來搜索試圖找到匹配項,但是必須將TZ規則轉換爲tzfile使用的格式,這是一項艱鉅的任務。

爲什麼不使用Java中使用的同一區域ID?例如,你可以,

出口TZ =澳大利亞/悉尼

這是支持最先進的Unix系統(如Linux和Mac OS X)設置TZ。搜索/etc/zoneinfo/usr/share/zoneinfo。如果您可以找到您的時區的文件,該ID將起作用。

我也開始使用自定義時區來處理舊的TZ格式,但我能夠說服系統管理員使用區域ID,因此我沒有完成它。困難的部分是實施useDaylightTime(),因爲TZ中使用的規則非常複雜。

+0

感謝您的反饋意見,我一直這麼想。 – Matt 2009-09-09 08:24:41