我不是一个强大的ASP Classic开发人员,但我的任务是在工作中支持这个应用程序,我一直在尝试将RSS提要日期转换为短日期格式。我似乎无法找到解决方案。
我有这种格式:
Wed, 10 Jun 2009 12:46:13 +0000
我需要把它变成这种格式:
06/10/2009
到目前为止,我一直在修改ASP的RSS提要脚本:
<%
' change the RSSURL variable to the exact URL of the RSS Feed you want to pull
RSSURL = "{url to rss feed}"
Dim objHTTP ' this object is used to call the RSS Feed remotely
Dim RSSURL,RSSFeed ' these variables hold the URL and Content for the RSS Feed
Dim xmlRSSFeed ' this variable hold the XML data in a DOM Object
Dim objItems,objItem, objChild ' these variables are used to temporarily hold data from the various RSS Items
Dim title,description,link ' these are local variables that will hold the data to be displayed
Dim pubDate
Dim RSSOutput ' variable will hold the HTML that was converted from the RSS Feed
' this code requests the raw RSS/XML and saves the response as a string <RSSFeed>
Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP")
objHTTP.open "GET",RSSURL,false
objHTTP.send
RSSFeed = objHTTP.responseText
' this code takes the raw RSSFeed and loads it into an XML Object
Set xmlRSSFeed = Server.CreateObject("MSXML2.DomDocument.4.0")
xmlRSSFeed.async = false
xmlRSSFeed.LoadXml(RSSFeed)
' this code disposes of the object we called the feed with
Set objHTTP = Nothing
' this is where you determine how to display the content from the RSS Feed
' this code grabs all the "items" in the RSS Feed
Set objItems = xmlRSSFeed.getElementsByTagName("item")
' this code disposes of the XML object that contained the entire feed
Set xmlRSSFeed = Nothing
' loop over all the items in the RSS Feed
For x = 0 to 3
' this code places the content from the various RSS nodes into local variables
Set objItem = objItems.item(x)
For Each objChild in objItem.childNodes
Select Case LCase(objChild.nodeName)
Case "title"
title = objChild.text
Case "link"
link = objChild.text
Case "description"
description = objChild.text
Case "pubdate"
pubDate = objChild.text
End Select
Next
' Format display output
RSSOutput = RSSOutput & "<tr><td valign='top' style='width:75px; height: 34px;' class='addresstext2'><b>"& pubDate &"</b></td><td valign='top'><a class=ccc href=""" & link & """>" & title & "</a></td></tr>"
Next
%GT;
当我从RSS获得pubDate时,我相信它是一个字符串,当我尝试CDate时,我得到一个Type不匹配,我也尝试过Format()和同样的交易。任何人都可以建议一种方法来将这个日期格式化为我需要的吗?
谢谢!
答案 0 :(得分:2)
Rss使用RFC822中指定的格式。
我在this thread中找到了一个函数:
function parseRSSDate(sRSSDate)
' take RFC822-formatted date string and return VBScript date object
' ie: "Fri, 13 Jun 2008 16:33:50 GMT"
dim sDay, sMonthName, sMonthNum, sYear, sHour, sMinute, sSecond
dim oRE, oMatches, oMatch
dim sDate, oDate
set oRE = new regexp
oRE.IgnoreCase = True
oRE.Global = True
oRE.Pattern = "^([A-Za-z]{3}),\s([0-9]{1,2})\s([A-Za-z]{3})\s([0-9]{4})\s([0-9]{2}):([0-9]{2}):([0-9]{2})"
set oMatches = oRE.Execute(sRSSDate)
if oMatches.count > 0 then
set oMatch = oMatches(0)
sDay = oMatch.SubMatches(1)
sMonthName = oMatch.SubMatches(2)
sMonthNum = monthVal(sMonthName)
sYear = oMatch.SubMatches(3)
sHour = oMatch.SubMatches(4)
sMinute = oMatch.SubMatches(5)
sSecond = oMatch.SubMatches(6)
sDate = sMonthNum & "/" & sDay & "/" & sYear
oDate = cDate(sDate)
set oMatch = nothing
end if
set oMatches = nothing
set oRE = nothing
parseRSSDate = oDate
end function
它还调用一个名为monthVal的函数,它只返回一个月份名称的数字:
代码:
function monthVal(sMonthName)
' return month number (1-12) from month name
dim rv
dim aMonths : aMonths = Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
for i = 0 to uBound(aMonths)
if sMonthName = aMonths(i) then rv = i+1
next
monthVal = rv
end function