我会尽可能清楚地解释我的情况。
我有一个包含多个数据的 DataTable,这些数据稍后会生成报告。它的一列是 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,但不复制未格式化的列,而是添加格式化值的数组。
你认为这可能吗?还有另一种方法可以做到这一点吗?也许我尝试以错误的方式更改值...
我真的不确定是否还有其他更好的解决方案,我很乐意听到您的所有建议,我对此一无所知。任何帮助将不胜感激。