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

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

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

    Rss 中日期格式的研究

    scud(飛云小俠) http://www.jscud.com 轉載請注明來源/作者

     

    rss中日期格式要求遵守rfc822規范,其中是這么寫的:

         date-time   =  [ day "," ] date time        ; dd mm yy
                                                     ;  hh:mm:ss zzz
    
         day         =  "Mon"  / "Tue" /  "Wed"  / "Thu"
                     /  "Fri"  / "Sat" /  "Sun"
    
         date        =  1*2DIGIT month 2DIGIT        ; day month year
                                                     ;  e.g. 20 Jun 82
    
         month       =  "Jan"  /  "Feb" /  "Mar"  /  "Apr"
                     /  "May"  /  "Jun" /  "Jul"  /  "Aug"
                     /  "Sep"  /  "Oct" /  "Nov"  /  "Dec"
    
         time        =  hour zone                    ; ANSI and Military
    
         hour        =  2DIGIT ":" 2DIGIT [":" 2DIGIT]
                                                     ; 00:00:00 - 23:59:59
    
         zone        =  "UT"  / "GMT"                ; Universal Time
                                                     ; North American : UT
                     /  "EST" / "EDT"                ;  Eastern:  - 5/ - 4
                     /  "CST" / "CDT"                ;  Central:  - 6/ - 5
                     /  "MST" / "MDT"                ;  Mountain: - 7/ - 6
                     /  "PST" / "PDT"                ;  Pacific:  - 8/ - 7
                     /  1ALPHA                       ; Military: Z = UT;
                                                     ;  A:-1; (J not used)
                                                     ;  M:-12; N:+1; Y:+12
                     / ( ("+" / "-") 4DIGIT )        ; Local differential
                                                     ;  hours+min. (HHMM)
    

     



    可以看出,前面的星期X是可以省略的,后面的時間是要求有時區的.

    示例如下(以在中國的中文操作系統機器為例):


     1.Tue, 16 Aug 2005 15:33:33 GMT
     2.Tue, 16 Aug 2005 23:33:33 +0800

    其實這個rfc822應該也是電子郵件內容格式的規范,找一個郵件看看內容,也可以看出,郵件的時間格式也是遵循這個規范的.

    要輸入第一種格式,使用SimpleDateFormat格式化即可,代碼如下

        public static void test1(Date date)
        {
            SimpleDateFormat sdfTemp = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z",Locale.US);
           
            SimpleTimeZone aZone = new SimpleTimeZone(8,"GMT");       
            sdfTemp.setTimeZone(aZone);
           
            System.out.println(sdfTemp.format(date));       
        } 

    注意,其中設置了時區為GMT,否則會輸出:

     Tue, 16 Aug 2005 23:33:33 CST

    這里的CST意思是代表"中國時間",但是一經搜索,發現CST代表了好幾個時區,太讓人混亂了.而在RTF822里面,CST僅代表美國中部時間.所以如果使用SimpleDateFormat,要設置時區以GMT表示,否則容易讓人迷惑而且不知道是那個時區.

    假設你在中國,想根據當地時間輸入復合當地時間的字符串,讓人一看就能明白文章的日期,那么就使用第二種格式.(我推薦使用第二種方式,當然你的頻道主要給外國朋友瀏覽登除外)

    上面說到和郵件有關,于是我們看看JavaMail包里面的javax.mail.internet.MailDateFormat,可以用來格式化日期:
    (MyEclipse 3.8.4附帶的J2EE 1.3中的JavaMail包)

            MailDateFormat mdf = new MailDateFormat();
           
            SimpleTimeZone aZone = new SimpleTimeZone(8,"GMT");       
            //mdf.setTimeZone(aZone);      
           
            System.out.println(mdf.format(date));        

    輸出結果為:

     Tue, 16 Aug 2005 23:33:33 +0800 (CST)
     
    如果設置了時區為GMT,則輸出:

     Tue, 16 Aug 2005 15:33:33 +0000 (GMT) 
     
     
     
    可以看到相對RTF822而言,好像多了一個后面的時區的說明及其括號.不知道這到底是怎么回事?

    在硬盤上查找一番,發現在JIRA程序和Confluence中的RSS里都使用了這個日期格式. 

    注意到這個不同,我瀏覽了一下outlook Express里面的郵件,發現兩種時間格式的郵件都存在,真是讓人迷惑,或許都可以吧,呵呵 :)

    如果不想使用MailDateFormat的格式,那么就自己寫一個類來實現吧,例如

     public class RssDateFormat extends MailDateFormat
     {
         public RssDateFormat()
         {
             applyPattern("EEE, d MMM yyyy HH:mm:ss ’XXXXX’");       
         }
     
     } 

     
    這是最簡單的了,當然可以把MailDateFormat的源碼拿過來改改更好一點,還不用依賴JavaMail了. :)

    至此,我的RSS中的日期終于正確而且讓我滿意了. :)

     


     

    posted on 2005-08-17 18:11 Scud(飛云小俠) 閱讀(1311) 評論(1)  編輯  收藏 所屬分類: Java

    評論

    # re: Rss 中日期格式的研究 2005-08-18 22:09 scud

    注意:jdk1.4的SimpleDateFormat已經支持RTF822的格式了,也就是最后一部分時區的字符串+/-0800,jdk1.3的不支持.
      回復  更多評論   

    <2005年8月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導航

    統計

    公告

    文章發布許可
    創造共用協議:署名,非商業,保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 手机看片久久国产免费| 国产又黄又爽胸又大免费视频| 国产精成人品日日拍夜夜免费| 亚洲午夜无码AV毛片久久| 边摸边脱吃奶边高潮视频免费| 免费观看男人免费桶女人视频| 亚洲欧洲中文日产| 亚洲中文无码卡通动漫野外| h视频在线免费看| 亚洲精品**中文毛片| 亚洲第一网站免费视频| 亚洲性无码av在线| 成全影视免费观看大全二| 亚洲中文字幕无码亚洲成A人片| 在线播放高清国语自产拍免费| 亚洲av永久无码天堂网| 亚洲爆乳大丰满无码专区| 最好免费观看韩国+日本| 疯狂做受xxxx高潮视频免费| 国产自偷亚洲精品页65页| 野花香高清在线观看视频播放免费 | 久久久久亚洲精品成人网小说| 久久这里只精品99re免费| 亚洲精品成人久久| 超pen个人视频国产免费观看| 国产成人va亚洲电影| 亚洲中文字幕无码一区| 51视频精品全部免费最新| 亚洲欧美精品午睡沙发| 久99精品视频在线观看婷亚洲片国产一区一级在线| 黄色a三级免费看| 久久精品国产亚洲AV无码偷窥| 一二三四在线播放免费观看中文版视频 | 亚洲av极品无码专区在线观看| 精品剧情v国产在免费线观看| 一区二区视频在线免费观看| 亚洲国产一区国产亚洲| 日韩激情无码免费毛片| 女人隐私秘视频黄www免费| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 久久福利青草精品资源站免费|