<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)航:
     
    主站蜘蛛池模板: 你懂的在线免费观看| 亚洲一区二区三区免费在线观看| 免费欧洲毛片A级视频无风险| 搡女人真爽免费视频大全| 100000免费啪啪18免进| 99在线精品免费视频九九视| 57PAO成人国产永久免费视频| 黄+色+性+人免费| 国产大片免费网站不卡美女| 香蕉97超级碰碰碰免费公| 欧美大尺寸SUV免费| 成人黄动漫画免费网站视频 | 两个人看的www免费视频中文| 两个人日本免费完整版在线观看1| 99re6在线精品免费观看| 波多野结衣免费一区视频| 欧洲人免费视频网站在线| 97视频免费观看2区| 99re热免费精品视频观看| 成人av免费电影| 亚洲第一永久AV网站久久精品男人的天堂AV | 最近免费mv在线电影| 啦啦啦高清视频在线观看免费| 黄a大片av永久免费| 免费国产人做人视频在线观看| 狠狠综合久久综合88亚洲| 亚洲AV色香蕉一区二区| 亚洲国产日韩在线人成下载| 亚洲丶国产丶欧美一区二区三区| 猫咪免费人成网站在线观看入口| 少妇性饥渴无码A区免费| 日韩免费人妻AV无码专区蜜桃 | 精品免费AV一区二区三区| 一级一看免费完整版毛片| 久久狠狠躁免费观看2020| 成年女人视频网站免费m| 亚洲成a人片在线观看老师| 久久亚洲免费视频| 久久亚洲精品国产亚洲老地址| 国产精品亚洲а∨天堂2021| 国产在线观看免费av站|