web-dev-qa-db-ja.com

データテーブルの日付列をフォーマットすることは可能ですか?

データテーブルdtがあり、列DateofOrderがあるとします。

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

DateOfOrder列のこれらの日付をこれにフォーマットしたい

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

なにか提案を..

7
ACP

最も賢明な方法は、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"));

型指定されていないDataTableでのみ機能します(たとえば、列の型はオブジェクトである必要があり、場合によっては文字列である必要があります)。

11
Rex M

.ToString( "dd/MMM/yyyy")(データがDateTime型であると想定)

0
saille

ここでsailleの答えを説明するだけです:

DateTimeの場合、形式は問題ではありません。 DateTimeは、実際には1月1日午前1時からカウントアップするティック数です。つまり、実際には長いだけです。書式設定が問題になるのは、文字列に変換するときだけです。したがって、データテーブルから取り出して出力する準備ができたときにフォーマットを処理するか、データテーブルに文字列として配置する必要があります(柔軟性のため、これはお勧めしません)。目的)。書式設定は、sailleが提案するDateTimeの.ToString呼び出し、.ToString("dd/MMM/yyyy")を使用して実行できます。

0
fire.eagle