-5
votes

C # DateTime.parseexact donne "la chaîne n'a pas été reconnue comme valeur DateTime valide."

J'essaie de déboguer et il est indiqué que "String est / n'a pas été reconnu comme une valeur de DateTime valide", j'ai trouvé environ 20 postes à ce sujet sur ce site Web et essayé chacun de TH OSE, aucun n'a fait aucune différence ou il a donné plus Erreur "0 n'est pas une valeur valide". Qu'est-ce que je fais mal? Parce que cela ne montre aucune erreur mais cesse de déboguer à chaque fois et donne l'erreur.

dtoday2 et cexpiration Je souhaite convertir d'une chaîne en une valeur DateTime, puis la comparez dans la ligne finale du code.

Remarque, la cexpiration provient d'un Textbox9.text qui est le flux de fichier droit ReadallText à partir d'un fichier enregistré, de sorte que je souhaite que le fichier sauvegardé sur DateTime. xxx

je m'attends Pour analyser textbox9.text comme par exemple 2019/01/17 01:01 mais je ne sais pas parce que je n'ai même pas eu d'expérience professionnelle avec elle, donc je ne sais pas avec certitude.

Mise à jour

 Entrez la description de l'image ici


5 commentaires

Comme sur votre question précédente, nous devons voir les entrées qui causent l'erreur, de préférence en tant que exemple de reproductible minimal .


L'erreur vous dit exactement ce qui se passe, il ne peut pas comprendre votre format DateTime. Alors maintenant, vous devez déterminer pourquoi, que ressemble à la chaîne date ? Vous ne nous avez pas montré, faites-nous confiance à ce que ce n'est pas un bogue avec .NET. Tout simplement votre Cheatexpiration n'est pas dans AAAA / MM / DD HH: MM Format ... Qu'est-ce que c'est dans ce fichier exactement


Le fichier qu'il charge est le même format DateTime. C'est ce que le fichier contient, 2032/02/11 03:21


Pouvez-vous casser pointe la ligne DateTime Cexpiration = textbox9.text prenez une capture d'écran de celui-ci si vous en avez besoin aussi


@Thegeneral Lien


3 Réponses :


0
votes

Vous devez réduire votre problème entre l'entrée qui fonctionne et qui ne le fait pas. A titre d'exemple, voici une entrée qui fonctionne bien:

var dt = DateTime.ParseExact("2019/01/17 01:01", "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("{0}", dt);


0 commentaires

2
votes

Votre problème est exactement comme nous le pensions, votre date de date n'est pas dans le format "aaayy / mm / jj hh: mm" , il est "AAAA / MM / DD HH: MM \ R \ N"

Alors, comment pouvons-nous le réparer? Nous pouvons utiliser le String.trim méthode, qui supprimera tous les retours d'espace blanc ou de chariot formant la chaîne xxx


0 commentaires

0
votes

Vous vous ouvrez à d'autres erreurs d'analyse en convertissant la date d'aujourd'hui à une chaîne, puis essayez de le convertir à nouveau à une date d'heure. En effet, l'appelant Tostring () entraînera différentes sorties dans différentes régions et / ou cultures. Au lieu de cela, comparez simplement DateTime.Today directement:

// this includes the Trim() suggested by the others
string cheatExpiration = System.IO.File.ReadAllText(@"C:\xWQcixf07xES5yf5V5A6\UKI9nRuJgZA611zQCyIq.txt").Trim();
DateTime cExpiration = DateTime.ParseExact(cheatExpiration, "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);
if (DateTime.Today < cExpiration)
{

}


0 commentaires