2017-06-01 1 views
1

Je veux analyser la chaîne littérale 01:4:54:28 dans une plage temporelle dans mais j'obtiens l'erreurComment analyser la chaîne à timespan

chaîne d'entrée ne sont pas dans un format correct

Code:

TimeSpan t = TimeSpan.Parse(dt.Rows[i]["karkard"].ToString()); 
+1

'var ts = TimeSpan.Parse (" 0: 4: 54: 28 ");' fonctionne bien pour moi; courez-vous peut-être dans une culture différente qui a différents formats de temps? Aussi, êtes-vous absolument sûr que la chaîne est '" 0: 4: 54: 28 "'? tip: lisez-le dans une variable pour pouvoir le déboguer: 'var s = dt.Rows [i] [" karkard "]. ToString(); TimeSpan t = TimeSpan.Parse (s); '. Note: '0.04: 54.28' serait plus" normal "ici. –

+0

Vous pouvez également utiliser TimeSpan.TryParse à la place –

+0

Quelle est la valeur de 'dt.rows [i] [" karkard "]'? Appeler 'ToString()' et ensuite analyser le résultat est presque toujours une mauvaise idée ... il est généralement préférable de simplement lancer le bon type et de travailler avec cela. –

Répondre

4

Il y a deux facteurs en jeu dans le formatage et l'analyse:

  • Qu'est-ce que réellement est la valeur?
  • dans quelle culture suis-je?

Pour la première, ajouter une variable:

string s = dt.Rows[i]["karkard"].ToString(); 
TimeSpan t = TimeSpan.Parse(s); 

et découvrez ce que s est dans le débogueur. Si nous supposons que c'est est vraiment"0:4:54:28", alors que fonctionne très bien pour moi, ce qui suggère la culture. Vous pouvez remplacer la culture par la surcharge:

TimeSpan t = TimeSpan.Parse(s, CultureInfo.InvariantCulture); 

qui devrait fonctionner pour tout le monde .

+0

Cher Marc Gravell: Je pourrais obtenir une réponse de votre réponse S'il vous plaît aidez-moi plus à analyser à la période de "jour: heures: minute: seconde" – Shayan