2011-03-31 3 views
2

essayant d'analyser ce que datetime:Parsing Datetime

2011.03.13-21:15:04+511.0597 

utilisant

Console.WriteLine(DateTime.ParseExact("2011.03.13-21:15:04+511.0597", 
             "yyyy.MM.dd-hh:mm:ss+ttt.tttt", 
        CultureInfo.CreateSpecificCulture("en-US")).ToString()); 

mais il dit chaîne non reconnue.

une idée de ce que je fais mal?

+2

Avez-vous essayé la DateTime.Parse moins formelle? – Tejs

+0

Les dates aux États-Unis sont écrites au format mm/jj/aaaa, ce qui n'est pas le cas dans votre exemple de date. – shahkalpesh

+1

@shahkalpesh: Peu importe, car il définit son propre format de toute façon. –

Répondre

3

Je ne sais pas exactement, mais si je coupe tout après les secondes, il analyse bien. La partie "tt" d'un format personnalisé est pour le marqueur AM/PM, ce qui est une cible probable ... Je suppose que vous voulez dire fff qui est la partie fractionnaire des secondes ...

Un autre est que vous avez plus bas- cas "hh" qui est pour 12 heures seulement - votre chaîne a 21 comme la partie d'une heure, ce qui nécessiterait en majuscules HH dans votre format ...

Vous aussi ne peut séparer deux groupes de chiffres avec un caractère , comme vous l'avez avec ttt.tttt. Le code de travail le plus proche que je peux obtenir à votre échantillon est le suivant:

DateTime.ParseExact("2011.03.13-21:15:04+511", "yyyy.MM.dd-HH:mm:ss+fff", CultureInfo.CreateSpecificCulture("en-US")) 
+0

problème est im obtenir cette chaîne à partir d'un fichier journal que je n'ai aucun contrôle sur, donc im coincé avec cet échantillon .. – Stacker

+1

Pouvez-vous juste couper après la période? Ou dépouiller la période avant l'analyse? –

+0

malheureusement je ne peux pas, comme c'est un peu important parce que cela compte, parfois je dois évaluer l'ordre des journaux et cela fait une différence. – Stacker