我想將文本轉換爲日期時間但出現錯誤。我的文本框值爲格式dd/MM/yyyy 字符串未被識別爲有效的DateTime。將文本轉換爲日期時間?
myFtMaster.GENTRTYDATEFROM =Convert.ToDateTime(txtTreatyPeriodfrom.Text.ToString());
我的業務對象'gentrtydatefrom'數據類型是DateTime。還有什麼是最好的方法來避免這些類型的錯誤,而不使用Try catch塊。
我想將文本轉換爲日期時間但出現錯誤。我的文本框值爲格式dd/MM/yyyy 字符串未被識別爲有效的DateTime。將文本轉換爲日期時間?
myFtMaster.GENTRTYDATEFROM =Convert.ToDateTime(txtTreatyPeriodfrom.Text.ToString());
我的業務對象'gentrtydatefrom'數據類型是DateTime。還有什麼是最好的方法來避免這些類型的錯誤,而不使用Try catch塊。
你要麼指定使用特定格式的文化:
myFtMaster.GENTRTYDATEFROM = Convert.ToDateTime(
txtTreatyPeriodfrom.Text, CultureInfo.GetCulture("en-GB")
);
或使用ParseExact
方法:
myFtMaster.GENTRTYDATEFROM = DateTime.ParseExact(
txtTreatyPeriodfrom.Text, "dd/MM/yyyy", CultureInfo.Invariant
);
的ParseExact
方法只接受特定的格式,而Convert.ToDateTime
方法仍然允許格式上的一些變化,並且還接受一些其他日期格式。
爲了趕上非法輸入,你可以使用TryParseExact
方法:
DateTime d;
if (DateTime.TryParseExact(txtTreatyPeriodfrom.Text, "dd/MM/yyyy", CultureInfo.Invariant, DateTimeStyles.None, out d)) {
myFtMaster.GENTRTYDATEFROM = d;
} else {
// communcate the failure to the user
}
謝謝你Guffa。只是一個小問題,ParseExact&Parse有什麼區別?另外爲什麼大多數研究人員傾向於使用ParseExact? – 2010-09-16 07:47:22
儘管我指定格式如myFtMaster.GENTRTYDATEFROM = DateTime.ParseExact(txtTreatyPeriodfrom.Text.ToString(),「dd/MM/yyyy」,new System.Globalization.CultureInfo(「 en-CA「,true)); – 2010-09-16 07:56:21
沒問題,轉換仍然取決於頁面的文化設置。由於我沒有設置爲en-CA,因此轉換可能無法正常工作。 – 2010-09-16 08:03:25
使用類似替代以下幾點:
DateTime date = DateTime.MinValue;
DateTime.TryParse(txtTreatyPeriodfrom.Text, out date);
的TryParse類似於DateTime.Parse()
但如果轉換失敗,則不拋出異常。
如果你想使用EN-CA特定文化使用以下命令:
DateTime.TryParse(txtTreatyPeriodfrom.Text, new CultureInfo("en-CA"),
DateTimeStyles.AllowWhiteSpaces, out date);
那麼顯然對付那些無法解析日期。
確保用戶在格式上提示將明顯減少錯誤。
'TryParse'方法返回解析是否成功。在調用之前將該變量設置爲DateTime.MinValue是不必要的,因爲無論解析是否成功,該值總是在方法中被替換。 – Guffa 2010-09-16 07:48:47
如果解析失敗,則說明日期等於DateTime.MinValue。設置它是不必要的,但我認爲維護代碼的人更容易閱讀。尤其是當您添加處理日期處理的代碼時。但無論如何,謝謝你補充說明。 – 2010-09-16 07:57:59
看一看
DateTime.TryParse(String value, out DateTime, [culture settings])
請記住,將字符串轉換爲DateTime取決於格式和文化(例如,美國傾向於使用MM/DD/yyyy,但其他國家使用dd/MM/yyyy),所以通常最好是要求特定的格式,並使用TryParse來處理失敗的分析。 – 2010-09-16 08:13:10
謝謝哈科。我會牢記這一點。 – 2010-09-16 09:15:42