2017-06-01 58 views
1

我想文字串01:4:54:28解析爲一個時間跨度,但我得到的錯誤如何解析字符串時間跨度

輸入的字符串不是正確的格式

代碼:

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

var ts = TimeSpan.Parse(「0:4:54:28」);'對我很好,你是否可能在不同的時間格式文化中運行?另外,你是否確定該字符串是「0:4:54:28」?提示:將它讀入一個變量,以便調試它:var s = dt.Rows [i] [「karkard」]。ToString(); TimeSpan t = TimeSpan.Parse(s);'。注意:這裏「0.04:54.28」會更「正常」。 –

+0

您也可以使用TimeSpan.TryParse而不是 –

+0

'dt.rows [i] [「karkard」]'的價值是什麼?調用'ToString()'然後解析結果幾乎總是一個壞主意......通常最好轉換爲正確的類型並使用它。 –

回答

4

在格式化和解析中有兩個因素起作用:

  • 什麼其實是值?
  • 我在哪種文化?

爲先,添加一個變量:

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

,並找出s是在調試器。如果我們假設它確實是"0:4:54:28",那麼對我來說工作正常,這表明文化。您可以通過超載重載文化:

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

應爲工作。

+0

親愛的Marc Gravell:我可以從你的答案得到迴應請幫助我解析從「日:小時:分:秒」的時間跨度, – Shayan