Действительно ли возможно отформатировать столбец даты таблицы данных?

Полагайте, что у меня есть таблица данных dt и это имеет столбец DateofOrder,

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

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

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

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

7
задан John Saunders 9 July 2010 в 04:40
поделиться

3 ответа

Разумнее всего будет убедиться, что ваша 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).

11
ответ дан 6 December 2019 в 22:59
поделиться

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

0
ответ дан 6 December 2019 в 22:59
поделиться

Просто дополняю ответ saille:

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

0
ответ дан 6 December 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: