C# 如何更改datatable中日期列的日期格式?
我正在从数据库中填充数据表。 它包含两个字段:C# 如何更改datatable中日期列的日期格式?,c#,string,date,datetime,datatable,C#,String,Date,Datetime,Datatable,我正在从数据库中填充数据表。 它包含两个字段:日期,时间 这两个字段都是datetime列 我想遍历数据表并更改date列的日期格式,即dd/MM/yyyy int i = 0; string d=""; foreach (DataRow dr in dataTable.Rows) { d = dr["DATE"].ToString(); DateTime date = Convert.ToDateTime(d); d = date.ToString("dd/MM/yyy
日期
,时间
这两个字段都是datetime
列
我想遍历数据表并更改date
列的日期格式,即dd/MM/yyyy
int i = 0;
string d="";
foreach (DataRow dr in dataTable.Rows)
{
d = dr["DATE"].ToString();
DateTime date = Convert.ToDateTime(d);
d = date.ToString("dd/MM/yyyy");
dataTable.Rows[i]["DATE"] = d;
i++;
}
我得到以下错误
字符串未被识别为有效的日期时间
无法在日期列中存储
。类型应为DateTime。我怎样才能实现它呢?好吧,你没有告诉我们你是如何创建你的数据表的,但我的想法是
如果DATE
和TIME
列都是DateTime
,则需要为它们提供DateTime
值。不是字符串
在.NETFramework中,结构没有任何隐式格式。它只有日期和时间值。当您尝试格式化它时,您会得到它的字符串表示形式。这就是为什么在您的情况下,2015年2月15日
将是一个字符串
,而不是DateTime
您在Convert.ToDateTime
方法上获得FormatException
,可能是因为您的d
值不是您的。您可以使用或方法使用自定义日期和时间解析
即使这样做,为什么要在datetime
类型化列中保留string
值?这根本没有道理。即使这样做,由于.Rows
返回一个值,您可能会得到一个集合被修改的结果;枚举操作可能不会执行错误,因为您试图在迭代集合时修改它
我建议您为字符串值创建另一个DataTable
,并将它们添加到DateTime
values字符串表示形式中,如dd/MM/yyyy
格式
int i = 0;
string d = "";
var stringDataTable = new DataTable();
stringDataTable.Columns.Add("DATE", typeof(String));
stringDataTable.Columns.Add("TIME", typeof(String));
foreach(DataRow dr in dataTable.Rows)
{
d = ((DateTime)dr["DATE"]).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
stringDataTable.Rows[i]["DATE"] = d;
i++;
}
不行。您可以更改区域设置,使日期默认为第一天和第二个月,例如Thread.CurrentThread.CurrentCulture=new CultureInfo(“fr”)代码>,但您仍然可以获得关联的时间。否则,在打印或处理日期时,您需要更改列类型或事后更改。@RaizeAhamed很乐意提供帮助。
int i = 0;
string d = "";
var stringDataTable = new DataTable();
stringDataTable.Columns.Add("DATE", typeof(String));
stringDataTable.Columns.Add("TIME", typeof(String));
foreach(DataRow dr in dataTable.Rows)
{
d = ((DateTime)dr["DATE"]).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
stringDataTable.Rows[i]["DATE"] = d;
i++;
}