2009-12-31 5 views
2

essayé de résoudre celui-ci pendant des heures ...DateTime dilemme Parse en C#

string date = "2009-09-23T13:00:00" 

DateTime t = new DateTime(); 
t = DateTime.ParseExact(date, "HH:mm", null); 

résultats dans cette exception:

System.FormatException a été unhandled message = "String n'a pas été reconnu comme DateTime valide. "

+0

Mais si je veux avoir un DateTime composé uniquement d'heures et de minutes? –

Répondre

15
t = DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 

Avec ParseExact, vous essayez de prendre une corde et indiquer à l'analyseur exactement ce que le format de la chaîne est. La ligne ci-dessus convertira à un DateTime valide.

Si vous voulez afficher uniquement les heures et minutes, alors vous ajoutez ce qui suit:

string myString = t.ToString("HH:mm"); 
4

Vous devez spécifier la chaîne entière à partir de laquelle elle est analysée.

DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 
+0

ParseExact renvoie un DateTime ou déclenche une exception (pas de retour booléen). Les méthodes TryParse renvoient des booléens. –

+0

ParseExact ne renvoie pas un bool, il renvoie un DateTime ... – Webleeuw

+0

@Sean, Webleeuw: Oh ouais, c'est vrai ... les deux ont été mélangés, désolé. – Bobby

1

ParseExact requiert que la chaîne corresponde exactement au format. Celui-ci ne le fait pas. Vous avez besoin de yyyy-MM-ddTHH: mm: ss comme chaîne.

2

La documentation dit tout:

Le format de la chaîne représentation doit correspondre à un spécifié le format exactement ou une exception est jeté.

Votre chaîne de date ne correspond pas au format HH: mm. Par ailleurs, vous pouvez laisser la date = new DateTime(); partie loin.

4

Vous essayez de spécifier un format qui ne correspond pas à l'entrée. ParseExact vous oblige à spécifier le format d'entrée; vous ne pouvez pas simplement spécifier un format indiquant les composants que vous souhaitez extraire.

Le format que vous devez utiliser ici est "yyyy-MM-ddTHH:mm:ss". Cependant, étant donné que cela ressemble à un format date/heure XML, si c'est le cas, il vaut mieux utiliser la méthode XmlConvert.ToDateTime car il peut gérer les subtilités de la spécification de format de date XML.

+0

XmlConvert était la réponse que je cherchais (sinon je l'aurais ajoutée ;-p) –