我在提交按鈕的文本框上使用Ajax控件工具包日曆擴展器。簡單。幫助將字符串日期轉換爲DateTime
調試程序顯示文本已正確傳輸到調用方法,但此行轉換代碼將文本框文本轉換爲1/1/0001 12:00:00 AM。文本框的日期是這樣的:4/15/2011
DateTime txtMyDate = Convert.ToDateTime(txtDate.Text);
我在做什麼錯?
我在提交按鈕的文本框上使用Ajax控件工具包日曆擴展器。簡單。幫助將字符串日期轉換爲DateTime
調試程序顯示文本已正確傳輸到調用方法,但此行轉換代碼將文本框文本轉換爲1/1/0001 12:00:00 AM。文本框的日期是這樣的:4/15/2011
DateTime txtMyDate = Convert.ToDateTime(txtDate.Text);
我在做什麼錯?
您應該使用DateTime.Parse()方法:
DateTime txtMyDate = DateTime.Parse(txtDate.Text);
如前所述,你也可以用類似的語法使用DateTime.ParseExact()如圖所示:
DateTime txtMyDate = DateTime.ParseExact(txtDate.Text,
[string format],
[IFormatProvider provider]);
解析VS ParseExact:
解析() - 假定數據有效並盡最大努力將其納入該類型中,當開發人員有機會引用常識時,這些東西顯得模糊不清。
ParseExact() - 只允許指定的確切格式,並會拋出任何變化。
奇怪的是,[MSDN](http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx)說'Convert.ToDateTime(string)'實際上調用DateTime.Parse()',所以我'如果'Convert.ToDateTime()'沒有,直接調用'DateTime.Parse()'會有點好奇。 – dandan78 2011-05-11 21:08:46
我已經嘗試了兩個,我仍然得到相同的結果。 – 2011-05-11 21:12:13
您仍然收到1/1/0001 12:00:00 AM作爲您的DateTime?如果發生這種情況,則可能是數據未正確傳入或未設置值的問題。 – 2011-05-11 21:13:55
有許多方法將文本轉換爲DateTime,試試這個:
DateTime txtMyDate =
DateTime.ParseExact(txtDate.Text, "M/d/yyyy", CultureInfo.InvariantCulture);
編輯:忘了文化信息的說法
這需要IFormatProvider的第三個參數。 – 2011-05-11 21:07:29
@尼克 - 是的,我意識到我錯過了它,編輯它。謝謝。 – 2011-05-11 21:08:13
使用DateTime.ParseExact從提取您的日期值一個格式的日期字符串:
DateTime dateValue =
DateTime.ParseExact(stringDateValue, "M/d/yyyy",
CultureInfo.InvariantCulture);
試試
DateTime instance = DateTime.Parse(txtDate.Text) ;
這是[有點]靈活的,它會接受什麼。或者,DateTime.ParseExact()
將使您能夠控制轉換。
那麼,你想要的只是一個日期時間值,只有一個日期?! – 2011-05-11 21:19:39