Полагайте, что у меня есть таблица данных dt
и это имеет столбец DateofOrder
,
DateofOrder
07/01/2010
07/05/2010
07/06/2010
Я хочу отформатировать эти даты в DateOfOrder
столбец к этому
DateofOrder
01/Jul/2010
05/Jul/2010
06/Jul/2010
Любое предложение..
Разумнее всего будет убедиться, что ваша DataTable типизирована, и этот столбец имеет тип DateTime. Тогда, когда вы будете выводить значения на экран, вы сможете установить формат в этот момент, не мучаясь с базовыми данными.
Если это невыполнимо, вот метод расширения, который я часто использую:
public static void Convert<T>(this DataColumn column, Func<object, T> conversion)
{
foreach(DataRow row in column.Table.Rows)
{
row[column] = conversion(row[column]);
}
}
В вашей ситуации его можно использовать так:
myTable.Columns["DateOfOrder"].Convert(
val => DateTime.Parse(val.ToString()).ToString("dd/MMM/yyyy"));
Он работает только с нетипизированными DataTables (например, тип столбца должен быть object или, возможно, string).
.ToString("dd/MMM/yyyy") (предполагается, что ваши данные имеют тип DateTime)
Просто дополняю ответ saille:
Для DateTime формат не является проблемой. DateTime - это количество тиков, отсчитываемых от полуночи 1 января 1 года н.э. Так что, на самом деле, это просто long. Форматирование становится проблемой только тогда, когда приходит время преобразовать его в строку. Поэтому вам придется позаботиться о форматировании либо когда вы вытащите его из таблицы данных и будете готовы вывести, либо когда поместите его в таблицу данных в виде строки (что я не рекомендую делать в целях гибкости). Форматирование можно выполнить с помощью вызова .ToString для DateTime, который предлагает saille, .ToString("dd/MMM/yyyy")