2013-08-28 2 views
0

quand j'ai changé le format de date du système dd/mm/yyyy, l'application Web jetant l'erreur de format, l'erreur ci-joint,Datetime lancer l'analyse syntaxique Format erreur d'exception

enter image description here

si le système a le format de date par défaut, son fonctionne bien. J'ai aussi essayé de mettre en forme la chaîne, mais elle n'a pas fonctionné non plus. S'il vous plaît, aidez-moi à corriger le problème.

ÉDITÉ

Voici le code Raising l'exception

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value = DateTime.Parse(createdon); 
+0

Meilleur code postal, évitez de mettre des images. BTW 'mm' signifie minutes pas mois. MM est utilisé pendant des mois. Utilisez 'TryParseExact' au lieu d'analyser, parce que c'est spécifique à la culture. – wudzik

+0

Pouvez-vous s'il vous plaît publier la ligne qui entraîne une exception? – shahkalpesh

+1

Il n'y a pas d'erreur dans le code, il y a un problème de culture, essayez d'utiliser 'TryParseExact' avec le formatage spécifié' dd/MM/yyyy' http://msdn.microsoft.com/fr-fr/library/h9b85w22.aspx – wudzik

Répondre

1

Lorsque vous utilisez DateTime.Parse(), si vous le voulez pour analyser les dates en utilisant un format autre que la culture du programme est en cours d'exécution sous, vous devez spécifiez IFormatProvider comme deuxième argument pour spécifier le format de date entrant attendu.

Exemple:

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value 
    = DateTime.Parse(createdon, new CultureInfo("en-US", true)); 

Ce analysera les dates au format dd/MM/yyyy, le format par défaut pour les Etats-Unis.

+1

Aussi à noter que vous pouvez utiliser DateTime.ParseExact si vous avez un format strict que vous souhaitez adhérer à – Lummo

+0

@ V4Vendetta, j'utilisais mm dans le compréhension générale, pas la chaîne de format .NET-spécifique. Mais bon point, je l'ai réparé. – richardtallent

+0

J'ai modifié le code comme "DateTime.ParseExact (createdon," d ", nouveau CultureInfo (" en-US ", true));" mais maintenant obtenir l'erreur "Erreur dans l'enregistrement du travail: le DateTime représenté par la chaîne n'est pas pris en charge dans le calendrier System.Globalization.GregorianCalendar." –

0

résolu le problème en corrigeant le code comme,

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value = DateTime.ParseExact(createdon, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

donc ses tout système paramètres datetime de travail, merci à vous tous.