報錯:該字符串未被識別為有效的DateTime
□ 背景
前端的搜索條件中包含關於時間的字符串,由jquery ui的datepicker產生時間字符串。
服務端對時間做了一次轉換:DateTime.Parse(Request["時間字段"].ToString())。
搜索的時候沒有選擇點擊datapicker,從而報錯,出錯的點停在了DateTime.Parse(Request["時間字段"].ToString())上。
□ 分析
在轉換成DateTime的時候,發生了錯誤。
MSDN上有此類異常的說明:
當某個實參的格式不符合方法的形參規范時,該方法會引發 FormatException 異常。
例如,在 System 命名空間中定義的許多數據類型都包含一個 Parse 方法,該方法采用字符串參數並將其轉換為數據類型。 如果所提供的參數的格式無法轉換,這些方法會引發 FormatException。 如果字符串參數的格式不是可識別的數字格式,Double.Parse將引發FormatException。
□ 解決方法
轉換之前,對時間是否為null或空做一下判斷:
if (!string.IsNullOrEmpty(Request["時間字段"]))
{
var time = DateTime.Parse(Request["時間字段"].ToString());
}