2009-08-18 7 views
0

Ich bin kein starker Entwickler von ASP Classic, aber ich bin mit der Unterstützung dieser Anwendung bei der Arbeit beauftragt, nun habe ich versucht, zu konvertieren ein RSS-Feed-Datum für ein kurzes Datumsformat. Und ich kann keine Lösung finden.RFC-32 Datumsformat zu kurzes Datum (MM/TT/JJJJ) mit ASP Classic

Ich habe dieses Format:

Wed, 10 Jun 2009 12:46:13 +0000 

und ich brauche es in diesem Format zu erhalten:

06/10/2009 

Bisher habe ich für ASP wurden mit diesem RSS-Feed Script gebastelt:

<% 
' 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 

%>

Da ich pubDate von der RSS bekomme, glaube ich, dass es eine Zeichenfolge ist, und wenn ich versuche, CDate zu erhalten, bekomme ich einen Type mismatch, ich habe auch Format() ausprobiert und gleich Deal. Kann jemand eine Methode vorschlagen, um dieses Datum zu formatieren, was ich brauche?

Danke!

Antwort

2

Rss verwendet das in RFC822 angegebene Format.

ich eine Funktion in this thread gefunden:

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 

es auch eine Funktion aufruft monthVal genannt, die nur eine Nummer für einen Monat Namen zurückgibt:

Code:

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 
+0

Awesome, das war schnell! Danke, ich kann nicht glauben, dass ich das dort vermisst habe, ich konnte keine Ergebnisse für das RSSDate-Format usw. über Google finden. – Jakub

+0

Kein Problem. Ich wusste, dass das rss Datumsformat RFC822 war, also suchte ich nach dem in Verbindung mit vbscript und/oder asp parse. – Espo