2009-09-24 19 views
7

Sto cercando di estrarre un oggetto DateTime dai feed RSS in C# e DateTime.Parse (string) funzionava correttamente per il feed RSS della BBC che ha un formato come: Gio, 24 Set 2009 13:08:30 GMTDateTime.Parse per pubDate nei feed RSS

Ma quando provo a utilizzarlo per il feed di Engadget che ha un formato data come Gio, 24 Set 2009 17:04:00 EST lancia un FormatException.

C'è qualcosa di diretto che mi manca qui?

+0

Questo formato di data potrebbe essere uno dei peggiori che conosca. –

+0

Fredrik, quale dei due esempi? –

+0

@Henk: bene, ma soprattutto quello trovato in molti feed RSS con quei fusi orari speciali. –

risposta

5

date parsing feed RSS è molto frustrante. Mi sono imbattuto in una fantastica libreria gratuita chiamata Argotic Syndication Framework on CodePlex. Funziona come un campione e supporta anche i feed di ATOM. Restituisce un bel set di dati da un feed, inclusa una data standard.

+0

Disponibile anche come pacchetto NuGet. –

1

Ho appena scritto questo, qualcun altro potrebbe trovarlo utile.

/// <summary> 
/// Converts c# DateTime object into pubdate format for RSS 
/// Desired format: Mon, 28 Mar 2011 02:51:23 -0700 
/// </summary> 
/// <param name="Date">DateTime object to parse</param> 
/// <returns>Formatted string in correct format</returns> 
public static string PubDate(DateTime Date) 
{ 
    string ReturnString = Date.DayOfWeek.ToString().Substring(0,3) + ", "; 
    ReturnString += Date.Day + " "; 
    ReturnString += CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(Date.Month) + " "; 
    ReturnString += Date.Year + " "; 
    ReturnString += Date.TimeOfDay + " -0700"; 

    return ReturnString; 
}