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.
This simply won't work, because you haven't changed the underlaying data type.
You have a DataTable, with a column which has data type DateTime.
You can assign a String to it, but it will convert back to DateTime.
Why do you want to change it to a formatted string? Can't you format only when you need to display it, and handle as a DateTime until you have to display it?
Update: it is also better if you check the column's type before you try to convert, it can be much faster:
if (dataTable.Columns[0].DataType == typeof(DateTime))
{
}