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 .
'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. –
Vous pouvez également utiliser TimeSpan.TryParse à la place –
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. –