2017-10-19 8 views
-1

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?

+3

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

+0

Ê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

+2

Ou utilisez 'DateTime.TryParseExact', et si elle renvoie false, imprimez * juste cette valeur * sur la console. –

Répondre

2

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.

+0

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. –

+0

@twin_choke N'ayez pas peur de demander - tout le monde commence quelque part. –