是否可以在运行时格式化数据表列值?
我正在尝试在DateTime
列中显示日期,如下所示
foreach (DataColumn c in ds.Tables[0].Columns)
{
if (c.DataType == typeof(DateTime))
{
string.Format("MM/dd/yyyy", c);
}
}
但随着时间的推移得到完整的日期..
编辑:
直到现在,我都是这个,... foreach (DataRow dr in ds.Tables[0].Rows)
{
foreach (DataColumn dc in ds.Tables[0].Columns)
{
if (dc.DataType == typeof(DateTime))
{
if (!String.IsNullOrEmpty(Convert.ToString(dr[dc])))
{
//string s = dr[dc].ToString();
//dr[dc] = s.Substring(0, s.IndexOf(' '));
//dr[dc] = Convert.ToDateTime(dr[dc]).ToShortDateString();
dr[dc] = Convert.ToDateTime(dr[dc]).ToString("MM/dd/yyyy");
}
}
}
}
仍然无法获得所需的结果
答案 0 :(得分:2)
得到了如下解决方案,..
DataTable dtCloned = ds.Tables[0].Clone();
foreach (DataColumn c in ds.Tables[0].Columns)
{
if (c.DataType == typeof(DateTime))
{
dtCloned.Columns[c.ColumnName].DataType = typeof(string);
colNames.Add(c.ColumnName);
}
}
foreach (DataRow row in ds.Tables[0].Rows)
{
dtCloned.ImportRow(row);
}
foreach (DataRow dr in dtCloned.Rows)
{
foreach (DataColumn dc in dtCloned.Columns)
{
if (colNames.Contains(dc.ColumnName))
{
string dt = Convert.ToString(dr[dc]);
if (!String.IsNullOrEmpty(dt))
{
DateTime date = DateTime.ParseExact(dt.Substring(0, dt.IndexOf(' ')), "M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
dr[dc] = date.ToString("MM/dd/yyyy");
}
}
}
}