La chaîne n'a pas été reconnu comme un DateTime valide dans ParseExact
Quand j'essaie de convertir les DateTime
à un format spécifique, je reçois cette erreur.
DateTime.Now= 6/5/2013 2:29:21 PM
DateTime.ParseExact(CStr(DateTime.Now), "MM/dd/yyyy", CultureInfo.CurrentCulture)
Erreur:
String was not recognized as a valid DateTime
Pourquoi je reçois ce?
- La culture est ce? Essayez de l'examen
CultureInfo.CurrentCulture
et de voir ce qu'il dit. - Question rhétorique: le premier argument dans la même exact format de votre chaîne de format? Avez-vous lu le documentation?
- Aussi, pourquoi fais-tu cela? Pourquoi ne pas simplement
DateTime.Today
? Il ne fait pas beaucoup de sens de prendre uneDateTime
, de les convertir en une chaîne de caractères, puis l'analyse de retour d'unDateTime
. - J'ai besoin de valider la
datetime
format donc je vais essayer de cette façon. Le format est fourni par l'utilisateur et je dois le valider - Même message d'erreur après l'utilisation de
CultureInfo.CurrentCulture
- Voir si cette aide.
- Le premier argument est une chaîne correcte?
- Je voulais savoir quelle culture ce n'était pas juste que vous l'avait regardé. J'ai voulu essayer de reproduire le problème, mais j'ai besoin de votre culture.
- Le premier argument contient de l'information en temps. Le format spécifié ne fait pas mention de l'information en temps. Donc ParseExact jette, car l'entrée ne correspond pas au format. Ce qui est surprenant?
- @LasseV.Karlsen: "fr-fr"
- Mais j'ai besoin de vous assurer que le format est correct. Maintenant que c'est correcte? Donc, il doit convertir la date à Date.
- Donc, vous dites que si le format est donné comme "MM/jj/aaaa HH:mm" sera ok? - il correct?
- Pas de. Je dis "la lecture de la documentation".
- La réponse est ci-dessous. C'est ce que je veux.
- Vous pouvez apprendre comment faire pour trouver la réponse vous-même (il a été extrêmement facile dans ce cas) ou de dépendre des autres pour les fournir. De votre choix.
Vous devez vous connecter pour publier un commentaire.
En dehors du fait que vous êtes à la conversion d'un DateTime pour une chaîne de caractères puis de nouveau, le format DateTime ne correspondent pas exactement.
DateTime.ParseExact
analyse une chaîne de caractères dans un objet DateTime, et le format que vous fournissez, il doit correspondre à exactement. Vous avez dit queDateTime.Now
apparaît comme6/5/2013 2:29:21 PM
, pour qui le format correct estM/d/yyyy h:mm:ss tt
. Vérifier MSDN pour plus d'informations sur les formats de date.Je vais aller sur une branche et dire que, en regardant ton code, je pense que vous essayez de formater la date d'entrée en seulement la date, qui peut être réalisé à l'aide de la
ToString
méthode DateTime:DateTime.Parse
etDateTime.ParseExact
sont pour le tournage de chaînes en DateTime objets.DateTime.ToString
est pour le tournage d'un DateTime en une représentation sous forme de chaîne. J'ai lu les commentaires sur votre question et il semble que vous souhaitez valider un format de date/heure fournie par l'utilisateur, est-ce correct?DateTime.Now.ToString("CC/dd/yyyy")
sortieCC/05/2013
. Vous voyez ce que je veux dire?DateTime.Now.ToString("MM/dddd/yyyy")
ne manquera pas, il sera tout simplement sortie06/Wednesday/2013
. Ceci est normal et est défini dans la documentation MSDN ici: msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#ddddSpecifier6/5/2013 2:29:21 PM
n'est pas le même queMM/dd/yyyy
.Alors, bien sûr, l'analyse échoue.
De vos commentaires on dirait que vous vous êtes vraiment tester la chaîne de format, et vous ne vous inquiétez pas au sujet de la valeur de la date.
Alors pourquoi ne pas simplement le code de votre date dans le format que vous voulez vraiment:
Note la partie de la méthode nommée Exacte, vous êtes en lui donnant une chaîne de caractères contenant un moment, et ne précise pas comment analyser le temps, de sorte que l'analyse échoue.
Essayez ceci:
Exemple LINQPad programme:
De sortie: