我试图将DataTable中的所有DateTime值转换为字符串.这是我使用的方法:
private static void ConvertDateTimesToStrings(DataTable dataTable) { if (dataTable == null) { return; } for (int rowIndex = 0; rowIndex < dataTable.Rows.Count; rowIndex++ ) { for (int i = 0; i < dataTable.Columns.Count; i++) { DateTime dateTime; try { dateTime = (DateTime)dataTable.Rows[rowIndex][i]; } catch (InvalidCastException) { continue; } dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss"); } } }
这条线路工作后:
dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss");
我检查dataTable.Rows [rowIndex] [i]的值,看它仍然是DateTime,而不是字符串.为什么会发生这种情况,我该如何解决?
编辑:我正在尝试这样做,因为我正在与api战斗,不幸的是我没有选择使用哪个组件.
这根本不起作用,因为您没有更改底层数据类型.
您有一个DataTable,其列的数据类型为DateTime.
您可以为其分配一个String,但它将转换回DateTime.
为什么要将其更改为格式化字符串?你不能只在你需要显示时格式化,并作为DateTime处理,直到你必须显示它?
更新:如果在尝试转换之前检查列的类型也更好,它可以更快:
if (dataTable.Columns[0].DataType == typeof(DateTime)) { }
它可能已确定列数据类型是日期时间,并且当您将值保存在那里时将值重新装箱到datetime.
试试这个......在数据表上创建一个新的列作为TypeOf(String),并将字符串值保存到该列中.复制完所有值后,删除日期时间列.