1

ここに私のC#コードの一部があります

if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
{
    foreach (DataRow dr in dsResult.Tables[0].Rows)
    {
        dr["Date"] = Convert.ToDateTime(dr["Date"]).ToString("yyyy-MM-dd");
    }
}
dsResult.Tables[0].AcceptChanges();

私がやろうとしているのは、データセットのDate形式が d/m/yyyy であり、データを形式に変更しようとしていますyyyy-MM-ddが、データセットが更新されていないことです。

4

1 に答える 1

2

日付保存方法と表示方法は大きく異なります。1/7/2013 00:00:00 AMたとえばのように表示される理由は、カルチャ設定に基づいてDataTableのデフォルト表示を表示しているためです。DateTime

ただし、このように表示したくない場合が多いため、この猫の皮を剥ぐ方法はいくつかありますが、いくつか紹介します。何よりもまず、アプリケーションのカルチャを単純に変更して、デフォルトで希望どおりに表示されるようにすることができます。

CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
Thread.CurrentThread.CurrentCulture = culture;

ここで、DateTime値を表示すると、たとえば次のように発行すると、デフォルトでそのカルチャが取得されます。

var dt = new DateTime();
dt.ToShortDateString(); // here is where the culture is used

また、アプリケーション内に特定の方法で表示する必要がある特定の場所があることに気付くかもしれません。

var dt = new DateTime();
dt.ToString("dd-MM-yyyy"); // custom formatting on the fly

したがって、要するに、で変更する必要はありませんDataTable。どのように表示されても、は同じです。

于 2013-01-09T13:48:20.107 に答える