2017-05-02 3 views
1

J'ai un problème avec DateTime l'analyse et les chaînes de format. La chaîne de format que je fournis semble être correcte, avec chaque caractère et délimiteur de la chaîne de format correspondant à un chiffre ou un caractère de la chaîne de date. L'erreur en particulier lit FormatException: chaîne de format non valide. J'utilise Mono C#, livré avec le moteur de jeu Unity3D.C# DateTime analyse "chaîne de format non valide"

Erreur:

"FormatException: Invalid format string"

code:

string date_string = "3/9/2017 19:50";  
string date_format_string = "M/d/yyyy HH:mm"; 
print("string value: [" + date_string + "]"); 
print("format string: [" + date_format_string + "]"); 
DateTime new_dt = DateTime.ParseExact(date_string, date_format_string, CultureInfo.InvariantCulture); 

Sortie de la console démontrant l'erreur: enter image description here

Toute aide serait appréciée, t écheveaux!

+0

Changez votre format de chaîne en "MM/jj/aaaa HH: mm" –

+0

Je ne sais rien à propos de mono, mais vous devriez envisager d'utiliser 'DateTime.TryParse()' de sorte que vous ne jetez pas une exception et vous pouvez gérer la chaîne de date si elle a échoué – prospector

+0

@ S.Petrosov J'ai tenté cela, et cela n'a pas aidé, malheureusement. https://drive.google.com/file/d/0B_yAQCrOblTcZU0waHZNWVpKVEU/view –

Répondre

0

Vous devez modifier cette ligne:

string date_format_string = "M/d/yyyy HH:mm"; 

Pour le bon format suivant:

string date_format_string = "MM/dd/yyyy HH:mm"; 

Ajouter des zéros à gauche vous datez

string date_string = "3/9/2017 19:50"; 

comme celui-ci

string date_string = "03/09/2017 19:50"; 

En savoir plus sur le formatage DateTime.ParseExact vous pouvez lire here

+0

J'ai essayé cela, et malheureusement, cela n'a pas fonctionné. https://drive.google.com/file/d/0B_yAQCrOblTcdUVyYnlyejQwcmM/view –

+0

@AustinYarger avez-vous essayé d'ajouter des zéros à votre chaîne string date_string = "3/9/2017 19:50"; comme cette chaîne date_string = "03/09/2017 19:50"; ? –

+0

ça marche! Je préfère vraiment ne pas forcer toutes mes dates dans ce format cependant. Dommage que l'analyse de DateTime soit inflexible/fragile. –

0

espère que cela vous aidera,

DateTime date = DateTime.Now; 
string dateWithFormat = date.ToLongDateString(); 

Vous pouvez également modifier le format de la chaîne. Vous pouvez le faire en date.ToString("dd - MM - yyyy"); qui serait quelque chose de sortie comme 02 - 05 - 2017

Refer this

0

J'ai eu ce problème aussi.

Je l'ai corrigé en m'assurant qu'il était par défaut 1000-01-01 00:00:00. Ceci est dû au fait que le message "0000-00-00 00:00:00" est erroné car la valeur la plus basse possible est: 1000-01-01 00:00:00.