将字符串列转换为DataTable中的DateTime列



我有一个从Excel中获取的数据表,其日期时间格式如下dd/MM/yyyy - HH: MM这个字段是DataTable中的字符串类型,我想把它转换成DateTime以便排序。

我尝试添加DateTime类型的列,并将字符串解析为DateTime,但解析失败。第一列是日期的字符串类型,我添加列号9作为DateTime类型。

这是我的代码

private void loadExcelButton_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "excel|*.xlsx";
openFileDialog.ShowDialog();
this.pathExcel = openFileDialog.FileName;
DataTable aux = Excel.ExcelToDataTable(this.pathExcel);
this.openExcelDT = AddDateColumn(aux);
this.openExcelDT.DefaultView.Sort = "Date asc";
OpenExcelBinding();
}
catch
{

}
}
private void OpenExcelBinding()
{
this.openExcelBind.DataSource = this.openExcelDT;
this.openExcelDGV.AutoGenerateColumns = true;
this.openExcelDGV.DataSource = this.openExcelBind;
this.openExcelDGV.Refresh();
}
private DataTable AddDateColumn(DataTable dataTable)
{
dataTable.Columns.Add("Date", typeof(DateTime));
foreach(DataRow row in dataTable.Rows)
{
string format = "\"dd/MM/yyyy - HH:mm\"";
DateTime date;
string s = row[0].ToString();
if (DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
row[9] = date;
}
}
return dataTable;
}

使用此代码

string format = "\"dd/MM/yyyy - HH:mm\"";
DateTime date;
string s = row[0].ToString(format);
if (DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
row[9] = date;
}

最新更新