我需要從Ruby中找出本地機器時區名稱(來自TZInfo :: Timezone.all_identifiers值列表)。我需要它,以便我可以正確設置Oracle數據庫會話時區,以便可以正確處理數據庫中時區值的時間戳。如何以與Java相同的方式從Ruby獲取本地時區名稱?
我想要獲得與使用java.util.TimeZone.getDefault()。getID()(在我的計算機上返回「Europe/Riga」)的Java相同的值。就我所看到的JDK源代碼而言,有特定於平臺的C函數可以找到這個默認時區。
所以當使用JRuby時,我可以調用這個Java方法。但是我需要一個可以用於MRI的解決方案。
我試圖使用Time.now.zone,但它返回不同的結果(在我的情況下「EET」或「EEST」),取決於當前是否夏令時。所以我真的需要得到前面提到的位置格式(比如「Europe/Riga」),它正確指定了切換到夏令時的日期。
有什麼建議嗎?
是的,在JRuby中很簡單。但我想在MRI中得到相同的結果(原始的基於C的Ruby解釋器)。 – 2009-11-03 09:38:04
我不認爲MRI沒有辦法做到這一點,沒有一些技巧或本地電話。在Linux上,很簡單,只需「cat/etc/timezone」。 – vsizikov 2009-11-03 12:59:28