<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(飛云小俠) 閱讀(1304) 評論(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)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品一区二区第四页 | jizz免费一区二区三区| 免费国产作爱视频网站| 亚洲视频在线观看地址| 222www在线观看免费| 午夜影视日本亚洲欧洲精品一区| 精精国产www视频在线观看免费| 四虎影视精品永久免费| 亚洲av综合日韩| 日韩亚洲精品福利| 久久精品成人免费观看97| 亚洲熟女少妇一区二区| 免费成人在线电影| 91亚洲精品自在在线观看| 91在线视频免费91| MM1313亚洲国产精品| 亚洲精品黄色视频在线观看免费资源| 男女污污污超污视频免费在线看| 国产国拍精品亚洲AV片| 免费国产99久久久香蕉| 亚洲妓女综合网99| 好爽好紧好大的免费视频国产| 免费无码专区毛片高潮喷水 | 免费av一区二区三区| 亚洲精品韩国美女在线| 精品久久久久国产免费| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲国产精品狼友中文久久久| 国产精品免费在线播放| 亚洲Aⅴ无码专区在线观看q| 91成人免费观看网站| 国产产在线精品亚洲AAVV| 亚洲国产日韩在线视频| 在线看片无码永久免费视频 | 成年免费a级毛片免费看无码| 亚洲国产精品久久66| 女人张腿给男人桶视频免费版| yellow视频免费在线观看| 亚洲妇女水蜜桃av网网站| 亚洲色偷偷狠狠综合网| 7723日本高清完整版免费|