<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 89,  comments - 98,  trackbacks - 0

    What's your time zone?

    JAVA日期和時間類徹底解決(3)

    Page 3 of 3

    時間區域和JAVA 
    涉及有關時間區域信息時Java和Solaris很相似。每個時間區域都有一個時間區域ID標識符。在J2SE 1.3 and 1.4中,這個ID是個字符串,是由位于J2SE 安裝程序的jre/lib子目錄中的tzmappings文件這些ID列表。 J2SE 1.3 僅僅只包含tzmappings文件,但是 J2SE 1.4包含世界不同地區的時間區域數據文件。jre/lib/zi存放著這些文件。在J2SE 1.4里,sun.util.calendar.ZoneInfo從這些文件獲取DST規則。在Solaris中, 這些時間區域數據文件是以二進制形式存放的,不是文本文件,因此你不能看它們。 在J2SE 1.4中的時間區域數據文件和在Solaris中是不同的。

    java.util.TimeZone類getDefault方法的源代碼顯示,它最終是會調用sun.util.calendar.ZoneInfo類的getTimeZone 方法。這個方法為需要的時間區域返回一個作為ID的String參數。這個默認的時間區域ID是從 user.timezone (system)屬性那里得到。如果user.timezone沒有定義,它就會嘗試從user.countryjava.home (System)屬性來得到ID。 如果它沒有成功找到一個時間區域ID,它就會使用一個"fallback" 的GMT值。換句話說, 如果它沒有計算出你的時間區域ID,它將使用GMT作為你默認的時間區域。

    注意,System屬性是在java.lang.System類的initProperties方法中被初始化的。這是一個本地方法。因此源代碼是不可用的----除非你深入到J2SE分發包中的本地代碼庫中去研究。然而,在Windows系統中,System 屬性是從Windows注冊表中被初始化的,而在Linux/Unix中是由環境變量來進行初始化。initProperties方法的Javadoc聲明,某些屬性"必須保證被定義" 且列出它們。被java.util.TimeZone類的getDefault方法使用的三個System屬性中,只有java.home作為一種“保證的”屬性在Javadoc中被列出。

    推薦的解決方案
    因此,你如何確保JAVA能給你正確的時間和日期呢?以我的觀點,最好的辦法是確認JAVA虛擬機(JVM)的默認TimeZone類是正確的,且是適合你的地理范圍(Locale)的。你如何來確保默認TimeZone是正確的且適合的呢?這又是一個新問題了。象大多數處理的問題一樣,這個也有許多解決方案。根據java.util.TimeZone.getDefault方法的源代碼來看,最好的辦法是正確地設置user.timezone屬性。在啟動JAVA虛擬機時,你能很容易的通過使用 -D 命令 -line 參數的辦法來覆蓋(override)在java.lang.System.initProperties方法中所設置的值。例如:

    java -Duser.timezone=Asia/Jerusalem DateTest

    這個命令啟動DateTest類(在這個文章開頭被列出的),并設置 user.timezone屬性到Asia/Jerusalem。你也能夠通過使用java.lang.System 類的setProperty方法來設置user.timezone 屬性:

    System.setProperty("user.timezone","Asia/Jerusalem");

    如果沒有一個可用的時間區域ID適合你,那么就你可以創建一個自定義TimeZone 使用java.util.TimeZone 類的 setDefault 方法將它設置為默認的時間區域----就象我先前在ItsInitializer 類中所做的操作一樣。

    記住,在J2SE中,大多數日期和時間相關的類都包含時間區域信息,包括那些格式類,如java.text.DateFormat, 因此它們都會被JVM的默認時間區域所影響。然而,在你創建這些類的實例時,你能為它們確保正確的時間區域信息,使得你可以更容易來設置整個JVM的默認時間區域。并且一旦設置好,就可以確保所有的這些類都將使用同一個默認的時間區域。但是,古語云,“事事難料”。

    所以,努力接觸并馴服這些JAVA日期/時間類吧!

    posted on 2006-02-18 09:33 水煮三國 閱讀(477) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2006年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627281234
    567891011

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 210783
    • 排名 - 266

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品免费观看久久| 亚洲综合伊人久久综合| 亚洲阿v天堂在线2017免费| 国产亚洲精品美女久久久| 国产大片免费网站不卡美女 | 亚洲亚洲人成综合网络| 222www免费视频| 精品一区二区三区无码免费直播| 午夜亚洲国产理论秋霞| 日本高清免费aaaaa大片视频| 国产中文字幕在线免费观看| 久久综合久久综合亚洲| 亚洲日韩欧洲无码av夜夜摸| 手机在线毛片免费播放| 国产成人无码区免费内射一片色欲| 国产成人亚洲精品| 中文字幕在线亚洲精品| 在线免费观看毛片网站| 久久免费观看国产精品| 小说区亚洲自拍另类| 亚洲精品在线不卡| 国产亚洲精品无码拍拍拍色欲| 国产免费看JIZZ视频| 国精产品一区一区三区免费视频| 亚洲AV噜噜一区二区三区| 亚洲黄网站wwwwww| 国产成人亚洲综合无码| 成人免费视频试看120秒| 久久精品无码专区免费东京热| 四虎精品成人免费视频| 国产成人亚洲综合网站不卡| 亚洲成AV人片一区二区| 亚洲国产成人久久精品99| 好爽…又高潮了毛片免费看| 中文字幕免费视频一| a毛片全部播放免费视频完整18| 国产午夜亚洲精品不卡免下载| 97se亚洲国产综合自在线| 亚洲黄网在线观看| 亚洲AV人人澡人人爽人人夜夜| 亚洲无码视频在线|