2010-09-17 3 views
1

i recevoir cette date: 9/20/2010 3:32:32 PMproblème avec la date de type

je dois convertir en datetime.

i essayer:

DateTime DateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "dd/M/yyyy", CultureInfo.InvariantCulture); 

mais j'obtiens l'erreur: String was not recognized as a valid DateTime.

dans mon ordinateur la région: Hebrew (Israel) dd/MM/yyyy for short date and hh:mm for short time

comment y remédier?

remercient à l'avance

+0

duplication possible de [je reçois la date dans le mauvais format - besoin d'aide] (http://stackoverflow.com/questions/3721731/i-get-date-in-wrong-format-need-help) –

Répondre

4

Comment pourrait-il fonctionner man.You sont convertir en "jj/mm/aaaa" & mois mettant en 20.In votre question dd/M/aaaa est wrong.It sera comme jj/mm/aaaa.

Par format par défaut est MM/DD/yyyy.

façon simple .......

DateTime DateFrom = DateTime.Parse("9/20/2010 3:32:32 PM"); 

si vous voulez fournir un format spécifique pour utiliser comme

DateTime DateFrom = DateTime.ParseExact("20/09/2010 3:32:32 PM", "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 

J'espère que ca fonctionne.

+0

@PrateekSaluja: Cela ne fonctionnera pas, car il essaie d'analyser une date et l'heure comme une simple date. –

+0

La valeur par défaut est uniquement "MM/jj/aaaa" si vos paramètres de culture le spécifient. – cjk

+0

Monsieur J'ai essayé DateTime DateFrom = DateTime.Parse ("9/20/2010 3:32:32 PM"); Et ça m'a donné la sortie. – PrateekSaluja

0

Il ressemble à votre chaîne de date d'origine est dans un format américain (à savoir m/jj/aaaa). Essayez de remplacer votre troisième paramètre par new CultureInfo("en-US")

+0

Cela ne va pas pour aider quand il attend explicitement "jj/m/aaaa" dans la chaîne de format. –

11

Si vous recevez "9/20/2010 3:32:32 PM" comme une chaîne, puis en essayant de l'analyser comme si elle était dans le "jj/MM/aaaa "le format est clairement faux - c'est essayer d'utiliser un mois de 20. Vous êtes également seulement l'analyse d'une partie de la chaîne - vous devez soit couper votre chaîne ou fournir le format complet.

Essayez ceci:

DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", 
             "M/dd/yyyy h:mm:ss tt", 
             CultureInfo.InvariantCulture); 

Notez que l'utilisation de ce genre d'analyse syntaxique stricte ne fonctionnera que si vous pouvez garantir que ce sera toujours être le format. D'où obtenez-vous ces données?

+0

sacrément vous êtes trop rapide pour moi! Était sur le point de poster exactement le même commentaire :-) éditer - juste testé ...n'a pas fonctionné – Xander

+0

merci pour l'aide, mais toujours la même erreur – Gold

+1

il faut deux 't' à la fin du format .. à savoir "M/jj/aaaa h: mm: ss tt" – Xander

0
DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 

Works pour moi

+0

p.s. Merci à Jon Skeet d'être arrivé en premier (je viens de faire un léger changement) – Xander

0

Je ne voudrais pas utiliser ParseExact() quand je sais que la chaîne de temps est formatée par la culture invariantes.

DateTime dateFrom = DateTime.Parse(dateString, CultureInfo.InvariantCulture);

est à la fois plus compact et plus clair.