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

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

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

    騎豬闖天下

    J2ME隨筆,記錄成長(zhǎng)的腳步

    統(tǒng)計(jì)

    留言簿(3)

    閱讀排行榜

    評(píng)論排行榜

    [J2ME-原創(chuàng)] 時(shí)區(qū)TimeZone和時(shí)間

    實(shí)現(xiàn)時(shí)間的代碼如下:

        private int minute = 0, hour = 0,second = 0;
        
    private
     String strminute, strhour, strsecond;
       
    /**
        * 畫(huà)時(shí)間-
        * 
    @param focusTemp
        * 
    @param
     gr
        
    */

       
    public void drawTime(Graphics gr) {
           Calendar cal  
    =
     Calendar.getInstance();    

               second 
    =
    cal.get(Calendar.SECOND);        
            minute 
    =
     cal.get(Calendar.MINUTE);
            hour 
    =
     cal.get(Calendar.HOUR_OF_DAY);    
            
            strsecond 
    =
     Integer.toString(second);        
            strminute 
    =
     Integer.toString(minute);
            strhour 
    =
     Integer.toString(hour);
            
            
    if(second<10
    )
                strsecond
    ="0"+
    strsecond;
            
    if(minute<10
    )
                strminute
    ="0"+
    strminute;
            
    if(hour<10
    )
                strhour
    ="0"+
    strhour;

            Font aa
    =
    gr.getFont();
            gr.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
            gr.setColor(
    0xFFD700
    );
            gr.drawString(strhour 
    + ":" + strminute , SCREEN_WIDTH-5060
    );
            gr.setFont(aa);
       }

    一般情況下,使用這些就足夠了。

    如果更深一步探索,需要對(duì)時(shí)區(qū)控制的話(huà),見(jiàn)下面:
    1.這樣獲取的時(shí)間,無(wú)論電腦上調(diào)試時(shí)還是在真機(jī)上,顯示的都是一樣的
    TimeZone china=TimeZone.getTimeZone("GMT+08:00");
            Calendar cal1  
    =
     Calendar.getInstance(china);    
            
    int second =
    cal1.get(Calendar.SECOND);        
            
    int minute =
     cal1.get(Calendar.MINUTE);
            
    int hour =
     cal1.get(Calendar.HOUR_OF_DAY);    
            
            String strsecond 
    =
     Integer.toString(second);        
            String strminute 
    =
     Integer.toString(minute);
            String strhour 
    =
     Integer.toString(hour);
            System.out.println(
    "北京時(shí)間 "+strhour + ":" + strminute +":"+strsecond);//GMT+08:00

            

    TimeZone就是對(duì)時(shí)區(qū)的控制,

    在Eclipse開(kāi)發(fā)時(shí),如果不設(shè)置時(shí)區(qū)的話(huà),用Calendar獲取的時(shí)間是默認(rèn)的格林威治標(biāo)準(zhǔn)時(shí)間
    在Eclipse開(kāi)發(fā)時(shí),如果設(shè)置時(shí)區(qū)的話(huà),    用Calendar獲取的時(shí)間是設(shè)置的那個(gè)時(shí)區(qū)的時(shí)間

    舉例如下:
    A>. 社區(qū)的設(shè)置
       //獲得實(shí)際手機(jī)使用區(qū)域的默認(rèn)時(shí)區(qū)
       TimeZone defaultZone = TimeZone.getDefault();
       
    //獲得默認(rèn)時(shí)區(qū)對(duì)象的ID標(biāo)識(shí)

       System.out.println(defaultZone.getID());//UTC
            
       
    //取得中國(guó)的時(shí)區(qū)

            TimeZone china=TimeZone.getTimeZone("GMT+08:00");
            System.out.println(china.getID());
    //GMT+08:00

    B >. 時(shí)區(qū)不同,時(shí)間的不同

            TimeZone china=TimeZone.getTimeZone("GMT+08:00");
            System.out.println(china.getID());
    //GMT+08:00

            prompt3=china.getID();
            
            Calendar cal1  
    =
     Calendar.getInstance(china);    
            
    int second =
    cal1.get(Calendar.SECOND);        
            
    int minute =
     cal1.get(Calendar.MINUTE);
            
    int hour =
     cal1.get(Calendar.HOUR_OF_DAY);    
            
            String strsecond 
    =
     Integer.toString(second);        
            String strminute 
    =
     Integer.toString(minute);
            String strhour 
    =
     Integer.toString(hour);
            System.out.println(
    "東八時(shí)區(qū)ID"+prompt3);//GMT+08:00

            System.out.println("北京時(shí)間 "+strhour + ":" + strminute +":"+strsecond);//
        
            
            
            TimeZone defatime 
    =
    TimeZone.getDefault();
            System.out.println(defatime.getID());
    //GMT+08:00

            prompt4=defatime.getID();
            
            Calendar cal2  
    =
     Calendar.getInstance(defatime);    
            second 
    =
    cal2.get(Calendar.SECOND);        
            minute 
    =
     cal2.get(Calendar.MINUTE);
            hour 
    =
     cal2.get(Calendar.HOUR_OF_DAY);    
            
            strsecond 
    =
     Integer.toString(second);        
            strminute 
    =
     Integer.toString(minute);
            strhour 
    =
     Integer.toString(hour);
            System.out.println(
    "默認(rèn)時(shí)區(qū)ID"+prompt4);//UTC

            System.out.println("默認(rèn)時(shí)間 "+strhour + ":" + strminute +":"+strsecond);//
    這兩個(gè)時(shí)間,在手機(jī)上顯示的是一樣的,但是在Eclipse開(kāi)發(fā)時(shí),是相差8個(gè)小時(shí)的。

    應(yīng)用:
    在電腦上的模擬器上,正因?yàn)闀r(shí)區(qū)id不同,可以作為簡(jiǎn)單的反模擬器使用的一個(gè)方法,只要時(shí)區(qū)id不同,就不然程序啟動(dòng)。

    2.API中的使用方法:
    返回 TimeZonejava.util 中的方法
    static TimeZone TimeZone.getDefault()
              獲取此主機(jī)的默認(rèn) TimeZone
     TimeZone Calendar.getTimeZone()
              獲得時(shí)區(qū)。
     TimeZone GregorianCalendar.getTimeZone()
               
    static TimeZone TimeZone.getTimeZone(String ID)
              獲取給定 ID 的 TimeZone
     

    參數(shù)類(lèi)型為 TimeZonejava.util 中的方法
    static Calendar Calendar.getInstance(TimeZone zone)
              使用指定時(shí)區(qū)和默認(rèn)語(yǔ)言環(huán)境獲得一個(gè)日歷。
    static Calendar Calendar.getInstance(TimeZone zone, Locale aLocale)
              使用指定時(shí)區(qū)和語(yǔ)言環(huán)境獲得一個(gè)日歷。
     boolean TimeZone.hasSameRules(TimeZone other)
              如果此區(qū)域和另一個(gè)區(qū)域具有相同的規(guī)則和偏移量,也就是說(shuō),如果此區(qū)域只可能在 ID 上與另一個(gè)區(qū)域不同,則返回 true。
     boolean SimpleTimeZone.hasSameRules(TimeZone other)
              如果此時(shí)區(qū)與另一時(shí)區(qū)具有相同的規(guī)則和偏移量,則返回 true
    static void TimeZone.setDefault(TimeZone zone)
              設(shè)置由 getDefault 方法返回的 TimeZone
     void Calendar.setTimeZone(TimeZone value)
              使用給定的時(shí)區(qū)值來(lái)設(shè)置時(shí)區(qū)。
     void GregorianCalendar.setTimeZone(TimeZone zone)
               
     

    參數(shù)類(lèi)型為 TimeZonejava.util 中的構(gòu)造方法
    Calendar(TimeZone zone, Locale aLocale)
              構(gòu)造一個(gè)帶有指定時(shí)區(qū)和語(yǔ)言環(huán)境的 Calendar。
    GregorianCalendar(TimeZone zone)
              在具有默認(rèn)語(yǔ)言環(huán)境的給定時(shí)區(qū)內(nèi)構(gòu)造一個(gè)基于當(dāng)前時(shí)間的 GregorianCalendar
    GregorianCalendar(TimeZone zone, Locale aLocale)
              在具有給定語(yǔ)言環(huán)境的給定時(shí)區(qū)內(nèi)構(gòu)造一個(gè)基于當(dāng)前時(shí)間的 GregorianCalendar



    3.TimeZone時(shí)區(qū)的擴(kuò)展知識(shí)

    java.util.TimeZone,

    API簡(jiǎn)述:

    TimeZone
    表示時(shí)區(qū)偏移量,也可以計(jì)算夏令時(shí)。

    通常,使用 getDefault 獲取 TimeZonegetDefault 基于程序運(yùn)行所在的時(shí)區(qū)創(chuàng)建 TimeZone。例如,對(duì)于在日本運(yùn)行的程序,getDefault 基于日本標(biāo)準(zhǔn)時(shí)間創(chuàng)建 TimeZone 對(duì)象。

    也可以用 getTimeZone 及時(shí)區(qū) ID 獲取 TimeZone 。例如美國(guó)太平洋時(shí)區(qū)的時(shí)區(qū) ID 是 "America/Los_Angeles"。因此,可以使用下面語(yǔ)句獲得美國(guó)太平洋時(shí)間 TimeZone 對(duì)象:

     TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
    
    可以使用 getAvailableIDs 方法來(lái)對(duì)所有受支持的時(shí)區(qū) ID 進(jìn)行迭代。可以選擇受支持的 ID 來(lái)獲得 TimeZone。如果想要的時(shí)區(qū)無(wú)法用受支持的 ID 之一表示,那么可以指定自定義時(shí)區(qū) ID 來(lái)生成 TimeZone。自定義時(shí)區(qū) ID 的語(yǔ)法是:
     CustomID:
             GMT Sign Hours : Minutes
    GMT Sign Hours Minutes
    GMT Sign Hours
    Sign: 下面之一
    + -
    Hours:
    Digit
    Digit Digit
    Minutes:
    Digit Digit
    Digit: 下面之一
    0 1 2 3 4 5 6 7 8 9
    
    Hours 必須在 0 至 23 之間,Minutes 必須在 00 至 59 之間。例如,"GMT+10" 和 "GMT+0010" 分別意味著比 GMT 提前 10 小時(shí)和 10 分鐘。

    格式是與區(qū)域無(wú)關(guān)的,并且數(shù)字必須取自 Unicode 標(biāo)準(zhǔn)的 Basic Latin 塊。沒(méi)有夏令時(shí)轉(zhuǎn)換安排可以用自定義時(shí)區(qū) ID 指定。如果指定的字符串與語(yǔ)法不匹配,就使用 "GMT"

    當(dāng)創(chuàng)建一個(gè) TimeZone 時(shí),指定的自定義時(shí)區(qū) ID 采用下面的語(yǔ)法進(jìn)行標(biāo)準(zhǔn)化:

     NormalizedCustomID:
             GMT Sign TwoDigitHours : Minutes
    Sign: 下面之一
    + -
    TwoDigitHours:
    Digit Digit
    Minutes:
    Digit Digit
    Digit: 下面之一
    0 1 2 3 4 5 6 7 8 9
    
    例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。
    GMT簡(jiǎn)介:

    GMT(Greenwich Mean Time)是格林尼治平時(shí):

      由于地球軌道并非圓形,其運(yùn)行速度又隨著地球與太陽(yáng)的距離改變而出現(xiàn)變化,因此視太陽(yáng)時(shí)欠缺均勻性。視太陽(yáng)日的長(zhǎng)度同時(shí)亦受到地球自轉(zhuǎn)軸相對(duì)軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學(xué)家計(jì)算地球非圓形軌跡與極軸傾斜對(duì)視太陽(yáng)時(shí)的效應(yīng)。平太陽(yáng)時(shí)就是指經(jīng)修訂后的視太陽(yáng)時(shí)。在格林尼治子午線(xiàn)上的平太陽(yáng)時(shí)稱(chēng)為世界時(shí)(UT0),又叫格林尼治平時(shí)(GMT)。

      格林尼治標(biāo)準(zhǔn)時(shí)間

      格林尼治標(biāo)準(zhǔn)時(shí)間(GMT,舊譯“格林威治平均時(shí)間”或“格林威治標(biāo)準(zhǔn)時(shí)間”)是指位于倫敦郊區(qū)的皇家格林尼治天文臺(tái)的標(biāo)準(zhǔn)時(shí)間,因?yàn)楸境踝游缇€(xiàn)被定義在通過(guò)那里的經(jīng)線(xiàn)。

      理論上來(lái)說(shuō),格林尼治標(biāo)準(zhǔn)時(shí)間的正午是指當(dāng)太陽(yáng)橫穿格林尼治子午線(xiàn)時(shí)(也就是在格林尼治上空最高點(diǎn)時(shí))的時(shí)間。由于地球在它的橢圓軌道里的運(yùn)動(dòng)速度不均勻,這個(gè)時(shí)刻可能和實(shí)際的太陽(yáng)時(shí)相差16分鐘。

      地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速。所以,格林尼治時(shí)間已經(jīng)不再被作為標(biāo)準(zhǔn)時(shí)間使用。現(xiàn)在的標(biāo)準(zhǔn)時(shí)間——協(xié)調(diào)世界時(shí)(UTC)——由原子鐘提供。

      自1924年2月5日開(kāi)始,格林尼治天文臺(tái)每隔一小時(shí)會(huì)向全世界發(fā)放調(diào)時(shí)信息。

      中文維基百科的編輯歷史記錄時(shí)間,采用的就是格林尼治標(biāo)準(zhǔn)時(shí)間。
     

    [End]  騎豬闖天下

    posted on 2010-04-14 15:59 騎豬闖天下 閱讀(10407) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩毛片一区视频免费| 国产午夜亚洲精品不卡| 18禁美女裸体免费网站| 亚洲国产一区二区三区青草影视| 中文字幕的电影免费网站| 亚洲片一区二区三区| 中国国产高清免费av片| 亚洲av无码国产精品夜色午夜 | 亚洲小视频在线观看| 一区二区三区在线免费看| 亚洲精品乱码久久久久久下载| 日本最新免费网站| 亚洲欧洲日产国产最新| 91香蕉视频免费| 男人的天堂av亚洲一区2区| 又大又黄又粗又爽的免费视频| 黄人成a动漫片免费网站| 国产黄色一级毛片亚洲黄片大全| 国产午夜不卡AV免费| 亚洲美女中文字幕| 毛片免费观看视频| 日日狠狠久久偷偷色综合免费 | 亚洲午夜av影院| 日韩内射激情视频在线播放免费| 亚洲AV综合色区无码二区爱AV| 天堂在线免费观看中文版| 日韩精品无码永久免费网站| 亚洲国产精品不卡在线电影| 成人免费一级毛片在线播放视频| 豆国产96在线|亚洲| 亚洲av中文无码乱人伦在线咪咕| 99久久99这里只有免费费精品| 国产亚洲视频在线观看网址| 国产aⅴ无码专区亚洲av| 日韩免费a级毛片无码a∨| 色噜噜狠狠色综合免费视频| 久久精品国产亚洲AV香蕉| 国产乱子伦片免费观看中字| 国产免费无码一区二区| 亚洲αⅴ无码乱码在线观看性色 | 亚洲日本中文字幕天堂网|