I am trying to convert all DateTime values in a DataTable to strings. Here is the method I use:
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'); } } }
After this line works:
dataTable.Rows[rowIndex][i] = dateTime.ToString('dd.MM.yyyy hh:mm:ss');
I check the value of dataTable.Rows[rowIndex][i] and see it is still a DateTime, not a string. Why does this happen and how can I solve this?
Edit: I am trying to do this because I am fighting an api and unfortunately I do not have the choice of which component to use.
It may have determined that the column data type is date time and is reboxing the values to datetime when you save the value back in there.
Try this… Create a new column on the datatable as a TypeOf(String), and save the string value into that column. When all the values have been copied, drop the date time column.