Dans ce code item.date_time
ressemble à "2017-10-18T04: 57: 39.000Z". Lorsque je mets ceci (ou toute autre chaîne similaire) au lieu de item.date_time
- cela fonctionne bien. Mais malgré le fait que item.date_time
est égal à des chaînes comme ceci - il appelle System.FormatException quand je l'utilise. Je suis passé par des dizaines de questions et réponses sur les problèmes de datetime aujourd'hui, mais rien trouvé ne peut résoudre cette chose étrange. Des idées quel est le problème avec mon code?Pourquoi datetime ne peut pas reconnaître la chaîne?
Répondre
str [0] est égale
"\"2017-10-18T04:57:39.000Z\""
Votre chaîne est entre guillemets (d'où les \"
indicateurs). Coupez les avant l'analyse syntaxique:
item.date_time = str[0].Trim('"');
item.datetime = DateTime.ParseExact(item.date_time, "yyyy-MM-ddTHH:mm:ss.000Z", CultureInfo.InvariantCulture);
Vous pouvez envisager d'utiliser TryParseExact
afin que vous puissiez déterminer si l'analyse a été effectuée et montrer un meilleur message d'erreur (comme qui enregistrement que vous êtes, ce que la valeur d'entrée est, etc.) plutôt que de lancer une exception.
Une autre alternative consiste à utiliser une bibliothèque d'analyse CSV qui peut gérer à la fois les guillemets autour des valeurs et l'analyse de la date et de l'heure pour vous.
Merci beaucoup, @D Stanley, qui fonctionne parfaitement pour moi. Je suis un novice absolu en codage et bien sûr je sais que ce n'était pas une question intelligente. Quoi qu'il en soit, je suis reconnaissant à tous ceux qui ont contribué, en particulier vous. –
@twin_choke N'ayez pas peur de demander - tout le monde commence quelque part. –
Il est évident qu'une valeur ne correspond pas à votre modèle de format DateTime attendu. Utilisez le débogueur pour comprendre ce que c'est. Peut-être qu'il y a une ligne vide ou vous avez des espaces ou l'encodage est différent ou il y a un caractère caché .... Le seul qui peut comprendre ceci est vous, vous avez accès aux valeurs où il échoue et nous ne le faisons pas (* parce que vous ne les avez pas inclus dans votre question *) – Igor
Êtes-vous absolument sûr que les chaînes sont les mêmes? Est-ce que 'item.date_time' a des guillemets ou des caractères échappés? Imprimez-les tous les deux sur la console. – Blorgbeard
Ou utilisez 'DateTime.TryParseExact', et si elle renvoie false, imprimez * juste cette valeur * sur la console. –