将DataGridView单元格值转换为DateTime

时间:2014-10-19 23:28:43

标签: c# winforms datetime datagridview datetimepicker

我现在一直在寻找这个答案:

我有一个datagridview,其中有一个带有日期的单元格,我需要在该单元格中创建一个DateTime值,该值可以与我的DateTimePicker一起使用

到目前为止,我已经完成了这项工作,但是它没有工作,它给了我一个System.FormatException(显然它无法将字符串识别为DateTime,这听起来是正确的)< / p>

这是有问题的代码:

int index = ReservationDataGridView.SelectedRows[0].Index;
string date = ReservationDataGridView[0, 1].Value.ToString();
DateTime test = DateTime.ParseExact(date, "dd/MM/yyyy - hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);

MessageBox.Show(test.ToString()

这是我的DateTimePicker的格式:

ReservationDateTimePicker.Format = DateTimePickerFormat.Custom;
ReservationDateTimePicker.CustomFormat = "dd/MM/yyyy - hh:mm tt";

这就是日期在DataGridView中的样子:

DataGridView

关于如何将DataGridView的Date值转换为适合具有该formaT的DateTimePicker的DateTime的任何想法?

2 个答案:

答案 0 :(得分:4)

将datagridview单元格值转换为datetime的最佳方法是使用convert函数。 如果您正在通过dataGridView使用循环。比如说for Loop。

for(int i=0; i<dataGridView1.Rows.Count; i++)
{
  DateTime date =  Convert.ToDateTime(dataGridView1.Rows[i].Cells[1].Value.ToString());   
}

如果您没有使用任何循环通过dataGridView而不是简单地使用以下代码。

DateTime date2 = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value.ToString());

如果您使用的是dataGridView1 CellContent Click事件,请使用以下代码。

private void grd_All_Degrees_CellClick(object sender, DataGridViewCellEventArgs e)
{
  DateTime date3 = Convert.ToDateTime(grd_All_Degrees.Rows[e.RowIndex].Cells[0].Value.ToString());     
}

答案 1 :(得分:0)

而不是从DataGridview单元格中获取string值的DateTime表示,而是从DataDridview的数据源中检索实际的DateTime值。