Можно ли отформатировать столбец даты таблицы данных? - PullRequest
7 голосов
/ 09 июля 2010

Предположим, у меня есть дата dt, и в нем есть столбец DateofOrder,

DateofOrder
07/01/2010
07/05/2010
07/06/2010

Я хочу отформатировать эти даты в столбце DateOfOrder в этом

DateofOrder
01/Jul/2010
05/Jul/2010
06/Jul/2010

Любое предложение ..

Ответы [ 3 ]

11 голосов
/ 09 июля 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"));

Он работает только с нетипизированными таблицами данных (например, тип столбца должен быть объектом или, возможно, строкой).

0 голосов
/ 09 июля 2010

Просто поясню ответ Сэйла здесь:

Для формата DateTime формат не является проблемой.На самом деле DateTime - это количество тиков, считающихся с полуночи 1 января 1 года нашей эры. Так что, на самом деле, это просто длинный.Форматирование становится проблемой только тогда, когда приходит время преобразовать его в строку.Итак, вам придется позаботиться о форматировании, когда вы извлечете его из таблицы данных и будете готовы вывести его, или поместите в таблицу данных в виде строки (что я бы не рекомендовал для гибкостицели).Форматирование может быть сделано с помощью вызова .ToString для DateTime, который предлагает saille, .ToString("dd/MMM/yyyy")

0 голосов
/ 09 июля 2010

.ToString ( "дд / MMM / YYYY") (при условии, что ваши данные имеют тип DateTime)

...