2013-01-09 155 views
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(); 

我想要做的是,该数据集在格式d/M/YYYY一个Date,我试图修改数据格式为yyyy-MM-dd,但我的数据集没有更新。

+0

如何在更新后查看数据以确定其是否有效? –

+0

我在视觉工作室中设置了一个断点 – iJade

+0

您是否试图修改数据库? 'AcceptChanges'不这样做。 –

回答

2

日期存储的方式,而且是显示是两个完全不同的事情的方式。例如DataTable中显示为1/7/2013 00:00:00 AM的原因是因为它基于您的文化设置显示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。不管它如何显示是一样的。

+0

嗯,我实际上并没有显示它,但使用通用函数将此数据表转换为csv文件,我希望日期字段为yyyy-MM-dd格式 – iJade

+0

@jade,创建CSV文件与显示它无异。 “DateTime”的***值***对于如何显示甚至输出到CSV文件具有* no *的含义。 CSV文件是以逗号分隔的文本文件是?那么这意味着你将不得不***以'string'格式显示*** DateTime'是吗?那么这意味着当您将'DateTime'放入CSV文件时,可以按照您想要的方式(如第二个示例)格式化它,或者更改文化。 –