RSS标准时间和Firefox折行的问题

2010-08-28 10:52:19来源:西部e网作者:

今天收到一封信件,是说西部e网(weste.net)的RSS显示的问题的。一直用Windows操作系统和IE浏览器,竟然没有发现这些错误,实在是惭愧。

以下是那位热心朋友Li Qihong的的邮件内容:

我是一名Linux下的用户,我订阅了贵站的RSS。大概从五月中旬开始,贵站的RSS就出现了一些小问题,主要如下:
1. 发送的日期永远是1970年,这个问题大概是今年的5月16日开始的,使得我无法按日期排列;
2. 大概是从上个月开始,贵站的RSS的详细内容在浏览时都变成了一行一个字,阅读起来非常麻烦,这个问题在Window下的Firefox浏览器中也存在。
我看RSS的工具是ThunderBird 2.0.0.0,操作平台是FC4。

希望能在百忙之中能够解决这两个问题,谢谢!

其实这两个问题解决起来非常简单,一共花了我10分钟时间。下面就说一下为什么会出现这样的问题:

1、RSS日期的问题

严格来说,RSS的时间应该为GMT时间(符合RFC822标准),但是一些Windows系统下RSS阅读器其实并不在乎这个,只要是正确的时间格式就行。我用过一次ThunderBird,只是收信而已所以根本没发现这个问题。Foxmail下面都是好的。

解决的方法:将2007-09-19 14:50:33这样的格式转换成了GMT时间Wes, 19 Sep 2007 14:50:33 +0800。这样在ThunderBird下显示就正常了。

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)

还是比较复杂的,网上peace.zhou曾经写了一段转换程序,用起来还是不错的:

'*************************************
'Coded By hooline 2006.9.8
'Email:hooline#gmail.com
'Msn:peace.zhou#msn.com
'功能:Asp转换时间为GMT(RFC822)格式时间函数
'**************************************
Function DateTimeToGMT(sDate)
   Dim dWeek,dMonth
   Dim strZero,strZone
   strZero="00"
   strZone="+0800"
   dWeek=Array("Sun","Mon","Tue","Wes","Thu","Fri","Sat")
   dMonth=Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
   DateTimeToGMT = dWeek(WeekDay(sDate)-1)&", "&Right(strZero&Day(sDate),2)&" "&dMonth(Month(sDate)-1)&" "&Year(sDate)&" "&Right(strZero&Hour(sDate),2)&":"&Right(strZero&Minute(sDate),2)&":"&Right(strZero&Second(sDate),2)&" "&strZone
End Function

2、在Firefox下浏览文章时都变成了一行一个字

这个问题就是CSS兼容的问题了!

为了保证文章强制折行,我在css中使用了“table-layout:fixed”。正是这个出现了问题,尤其在百分比的宽度下。去掉“table-layout:fixed”就好了。但是怎么样才能解决既适应IE又适应Firefox的折行呢?麻烦呀!

关键词:RSS

赞助商链接: