2009-09-24 10 views
7

J'essaie de tirer un objet DateTime des flux RSS en C# et DateTime.Parse (chaîne) fonctionnait bien pour le flux RSS de la BBC qui a un format comme: jeu, 24 sept 2009 13:08:30 GMTDateTime.Parse pour pubDate dans les flux RSS

Mais quand j'essaie d'utiliser cela pour le fil de Engadget qui a un format de date comme Jeu, 24 Sep 2009 17:04:00 EST throws une FormatException.

Y a-t-il quelque chose d'évident que je manque ici?

+0

Ce format de date peut très bien être l'un des plus mauvais que je connaisse. –

+0

Fredrik, lequel (parmi les 2 exemples)? –

+0

@Henk: Eh bien, les deux mais surtout celui trouvé dans de nombreux flux RSS avec ces fuseaux horaires spéciaux. –

Répondre

5

dates flux RSS d'analyse syntaxique est très frustrant. Je suis tombé sur une bibliothèque gratuite fantastique appelée le Argotic Syndication Framework on CodePlex. Il fonctionne comme un champion et prend également en charge les flux ATOM. Retourne un joli petit jeu de données provenant d'un flux, y compris une date standard.

+0

Disponible également en tant que paquet NuGet. –

1

Juste écrit ceci, quelqu'un d'autre pourrait le trouver 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; 
}