C#Index Out of Range创建日期时的异常

时间:2015-01-05 20:17:16

标签: c# sql-server datetime

我编写了一段代码,它连接到SQL Server以从数据库中检索一些数据。我需要的一种类型的数据是存储日期。这工作正常,它连接并检索我想要的所有数据,但是当我尝试使用从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,但它仍然无效(给出不同的错误)。

1 个答案:

答案 0 :(得分:0)

数组索引基于0。试试这个:

DateTime date = new DateTime(Convert.ToInt32(dateArr[2]), Convert.ToInt32(dateArr[1]), Convert.ToInt32(dateArr[0]));