我在我的控制器中有这个代码。这个代码在我尝试循环数据集时给出了异常。当我多次运行项目时,在不同的行上给出了异常。(例外情况不会发生在确切的行)
例外是;
字符串未被识别为有效的DateTime。
DateTime arrDate = DateTime.Parse(ds.Tables[0].Rows[i]["CheckInDate"].ToString());
我也试过了;
DateTime createdDate = DateTime.ParseExact(ds.Tables[0].Rows[i]["CheckInDate"].ToString(), "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
但它还没有工作..
该行的值为2/9/2016 21:20
答案 0 :(得分:4)
您只需将其转换为正确的类型,似乎是DateTime
,无需解析:
DateTime arrDate = ds.Tables[0].Rows[i].Field<DateTime>("CheckInDate");
如果它实际上是一个字符串(为什么会这样?)使用M/d/yyyy
而不是MM/dd/yyyy
:
DateTime.ParseExact("2/9/2016 21:20", "M/d/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo);
答案 1 :(得分:1)
ParseExact
要求您的字符串完全与您要解析的模式匹配。
你的模式有&#34; MM / dd&#34;这需要两位数的月份和日期(&#34; 01/29&#34;或&#34; 10/02&#34;或&#34; 01/02&#34;)但你只需要传递一位数的月份和日子(&#34; 2/9&#34;)。
您需要更改模式以接受单个数字或更改字符串以传递两位数。
答案 2 :(得分:0)
您需要知道检索日期的格式,然后使用正确的格式解析
dataType: 'json'
如果此格式不适用于当前文化(应用程序的语言和区域)
$.parseJSON(result)
OR
DateTime dt=DateTime.ParseExact(ds.Tables[0].Rows[i]["CheckInDate"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
有关更多信息,请查看Custom Date and Time Format Strings
答案 3 :(得分:-1)
尝试以下,
If ( ds.Tables[0].Rows[i]["CheckInDate"] != null ) {
// your code goes here...
DateTime arrDate = DateTime.Parse(ds.Tables[0].Rows[i]["CheckInDate"].ToString());
}