创建日期时 C# 索引超出范围异常
C# Index Out Of Range Exception when creating date
我编写了一段代码,它连接到 SQL 服务器以从数据库中检索一些数据。我需要的其中一种数据是某物的存储日期。这工作正常,它连接并检索我想要的所有数据,但是当我尝试使用从 SQL 获得的检索日期创建 DateTime
时,它给了我一个索引超出范围异常。
这是它的代码:
//sDate contains 14/11/2014 so dateArr[0] contains 14, dateArr[1] contains 11 and dateArr[2] contains 2014
for(int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
if(dataSet.Tables[0].Rows[i][9] != DBNull.Value)
{
String[] sDateAndTime = dataSet.Tables[0].Rows[i][9].ToString().Split(' ');
String sDate = sDateAndTime[0];
String[] dateArr = sDate.Split('/');
DateTime date = new DateTime(Convert.ToInt32(dateArr[3]), Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]));
Console.WriteLine(dateArr[0] + " " + dateArr[1] + " " + dateArr[2]);
}
}
奇怪的是错误只出现在DateTime date = new DateTime(Convert.ToInt32(dateArr[3]), Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]));
行
如果我注释掉那一行,它完全可以正常工作。有人可以让我知道我做错了什么吗?我已经尝试了各种方法,包括使用 DateTime.ParseExact
但它仍然不起作用(给出不同的错误)。
数组索引基于 0。试试这个:
DateTime date = new DateTime(Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]), Convert.ToInt32(dateArr[0]));
我编写了一段代码,它连接到 SQL 服务器以从数据库中检索一些数据。我需要的其中一种数据是某物的存储日期。这工作正常,它连接并检索我想要的所有数据,但是当我尝试使用从 SQL 获得的检索日期创建 DateTime
时,它给了我一个索引超出范围异常。
这是它的代码:
//sDate contains 14/11/2014 so dateArr[0] contains 14, dateArr[1] contains 11 and dateArr[2] contains 2014
for(int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
if(dataSet.Tables[0].Rows[i][9] != DBNull.Value)
{
String[] sDateAndTime = dataSet.Tables[0].Rows[i][9].ToString().Split(' ');
String sDate = sDateAndTime[0];
String[] dateArr = sDate.Split('/');
DateTime date = new DateTime(Convert.ToInt32(dateArr[3]), Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]));
Console.WriteLine(dateArr[0] + " " + dateArr[1] + " " + dateArr[2]);
}
}
奇怪的是错误只出现在DateTime date = new DateTime(Convert.ToInt32(dateArr[3]), Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]));
如果我注释掉那一行,它完全可以正常工作。有人可以让我知道我做错了什么吗?我已经尝试了各种方法,包括使用 DateTime.ParseExact
但它仍然不起作用(给出不同的错误)。
数组索引基于 0。试试这个:
DateTime date = new DateTime(Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]), Convert.ToInt32(dateArr[0]));