1

私は自分の状況をできるだけ明確に説明しようとします。

後でレポートを生成するいくつかのデータを含む DataTable があります。その列の 1 つは DateTime 型です。問題は、レポートが日付を表示するときに、「10/14/1996 12:00:00 AM」という長い形式で表示され、「DD-MMM-YYYY」の形式で表示する必要があることです。

dataTable の値を目的の形式に変更するために、いくつかのことを試みました。私はこれを試しました:

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DateTime cellValueDateOfBirth=Convert.ToDateTime(dt.Rows[i][indexDateOfBirth]);
                string formattedDateOfBirth = cellValueDateOfBirth.ToString("DD-MMM-YYYY");
                dt.Rows[i].SetField(indexDateOfBirth, formattedDateOfBirth);
                dt.Rows[i].ItemArray.SetValue(formattedDateOfBirth, indexDateOfBirth);
             }

デバッグすると、次の値が表示されるため、これは機能しません

string test = dt.Rows[i].ItemArray[indexDateOfBirth].ToString();  

私が期待したように、formattedDateOfBirth の値に設定されていませんでした。また、書式設定されていない日付でレポートが生成されます。

その日付の値を変更する方法をいくつか試しましたが、成功しませんでした。

私は本当にすべての dateTime データを気にしないので、(日付列の値を単純に変更できない場合に備えて) フォーマットされたすべての値を含む配列を作成することをお勧めします。次に、書式設定されていない日付の列を削除し、(可能であれば元の位置で) 書式設定された日付で作成された新しい配列に置き換える方法を見つけます。既に配列を作成しましたが、列の値を配列内の値に置き換える方法がわかりません。これが私がこれまでに持っているものです:

                string[] FormattedDatesOfBirth = new string[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DateTime cellValueDateOfBirth=Convert.ToDateTime(dt.Rows[i][indexDateOfBirth]);
                    string formattedDateOfBirth = cellValueDateOfBirth.ToString(EMR.HelperClasses.Core.chsDateFormat);


                    FormattedDatesOfBirth[i] = formattedDateOfBirth;

                }
                //then here I would create a column with the data in FormattedDatesOfBirth[]

他のアイデアは、DataTable のコピーを作成することですが、書式設定されていない列をコピーして、代わりに書式設定された値の配列を追加することではありません。

これは可能だと思いますか?これを行う別の方法はありますか?たぶん私は間違った方法で値を変更しようとしました...

他にもっと良い解決策があるかどうかは本当にわかりません。あなたの提案を喜んで聞きます。これについてのアイデアはありません。どんな助けでも大歓迎です。

4

1 に答える 1

0

C#の投稿を確認して、DataTable のデータを変更する方法を確認できますか? それらのいずれかがあなたに当てはまるかどうかを確認するには?特にhttps://stackoverflow.com/a/9998257/1520364

ToShortDateString関数を使用して、必要に応じてオブジェクトを直接出力DateTimeできませんか? または、このToStringのオーバーロードを使用して、Brian が提案するのと同様に、必要な形式を提供します。

于 2013-01-10T03:33:25.290 に答える