2012-12-30 24 views
0

當我嘗試轉換爲日期時,出現以下錯誤。字符串在插入期間未被識別爲有效的日期時間

字符串未被識別爲有效的DateTime。

cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012 

然後我嘗試

string date = string.Format("{0:yyyy-MM-dd}",c_date.Text); 
    cost.b_date = DateTime.Parse(date) ; 

,但我得到相同的異常是如何解決這個問題。

+0

它可能是由於錯誤輸入值。代碼已成功運行以獲取正確的值。 – Tilak

+0

什麼是'c_date'?如果你有日曆控件或日期時間選擇器只取日期,而不是原始文本.. –

回答

2

使用string.Format輸入是一個字符串是毫無意義的。

如果你知道字符串的格式,你應該使用DateTime.ParseExactDateTime.TryParseExact。例如,你有字符串,你可以使用:

DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy", 
            CultureInfo.InvariantCulture); 

你應該考慮:

  • 這是用戶輸入?如果是這樣,請使用TryParseExact更輕鬆地檢測到用戶錯誤,而無異常情況。
  • 確切知道你確切的格式嗎?如果不是,使用DateTime.TryParse可能更合適。
  • 你一定知道這種文化嗎?如果它不是當前線程的文化,則應該明確指定它。
  • 是否有以文字開頭的值?如果您可以使用一種替代形式的輸入,並將其作爲DateTime開頭,那將是更可取的。
+0

我得到這個錯誤 'SqlDateTime溢出。必須介於1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM.' –

+0

我的日期時間='28/12/2012 12:00:00 AM' –

+1

@just_name:那麼你的問題根本就沒有提到SQL。您尚未顯示如何嘗試將值插入數據庫。我希望你使用參數化的SQL,而不是直接在SQL字符串中包含值... –

1

嘗試使用DateTime.ParseExact。

DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null); 
2
CultureInfo provider = CultureInfo.InvariantCulture; 
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider); 
相關問題