2009-09-24 10 views
7

Próbuję pobrać obiekt DateTime z kanałów RSS w języku C# i DateTime.Parse (ciąg) działa poprawnie dla kanału RSS rss, który ma format taki jak: czw, 24 września 2009 13:08:30 GMTDateTime.Parse dla pubDate w kanałach RSS

Ale kiedy próbuję użyć tego dla kanału Engadget, który ma format daty, taki jak czw, 24 września 2009 17:04:00 EST wyrzuca wyjątek FormatException.

Czy jest coś prostego, czego tu brakuje?

+0

Ten format daty może być jednym z najgorszych, jakie znam. –

+0

Fredrik, który (z 2 przykładów)? –

+0

@Henk: cóż, obie, ale szczególnie ta, którą można znaleźć w wielu kanałach RSS z tymi specjalnymi strefami czasowymi. –

Odpowiedz

5

parsowania daty RSS jest bardzo frustrujące. Natknąłem się na fantastyczną darmową bibliotekę o nazwie Argotic Syndication Framework on CodePlex. Działa jak mistrz, a także obsługuje kanały ATOM. Zwraca ładny mały zestaw danych z kanału informacyjnego, w tym standardową datę.

+0

Dostępne również jako pakiet NuGet. –

1

Po prostu napisałem to, ktoś inny może się przydać.

/// <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; 
}