datetime.parse et le faire fonctionner avec un format spécifique

141

J'ai un datetime qui revient d'un fichier XML au format:

20080916 11:02

un péché

aaaamm hh: ss

Comment puis-je obtenir la fonction datetime.parse pour récupérer cela? Ie l'analyser sans erreur? À votre santé

anonym0use
la source

Réponses:

246
DateTime.ParseExact(input,"yyyyMMdd HH:mm",null);

en supposant que vous vouliez dire que les minutes suivaient les heures et non les secondes - votre exemple est un peu déroutant.

La documentation ParseExact détaille d'autres surcharges, au cas où vous voudriez que l'analyse soit automatiquement convertie en temps universel ou quelque chose du genre.

Comme le mentionne @ Joel Coehoorn , il y a aussi la possibilité d'utiliser TryParseExact , qui retournera une valeur booléenne indiquant le succès ou l'échec de l'opération - je suis toujours sur .Net 1.1, donc j'oublie souvent celui-ci.

Si vous avez besoin d'analyser d'autres formats, vous pouvez consulter les chaînes de format DateTime standard .

Blair Conrad
la source
11
N'oubliez pas DateTime.TryParseExact ()
Joel Coehoorn
Aussi: le XML standard a son propre format DateTime très spécifique, et les outils .Net Xml devraient pouvoir le lire.
Joel Coehoorn
Dans ce cas, cela fonctionne bien avec le dernier paramètre comme nul mais pour quiconque trouve ce CultureInfo.InvariantCulture sinon vous pouvez avoir des problèmes si votre datetime est quelque chose comme "1823/01/01".
Todilo
@JoelCoehoorn standard XML specific DateTime format?
Kiquenet
10

Merci pour l'astuce, j'ai utilisé ceci pour obtenir ma date "20071122" analysée, j'avais besoin d'ajouter des styles de datetimestyles, je n'en ai utilisé aucun et cela a fonctionné:

DateTime dt = DateTime.MinValue;

DateTime.TryParseExact("20071122", "yyyyMMdd", null,System.Globalization.DateTimeStyles.None, out dt);
Bert
la source