C# 是否可以格式化数据表的日期列?
假设我有一个datatableC# 是否可以格式化数据表的日期列?,c#,datatable,date-format,C#,Datatable,Date Format,假设我有一个datatabledt,它有一个列DateofOrder DateofOrder 07/01/2010 07/05/2010 07/06/2010 我想将DateOfOrder列中的这些日期格式化为 DateofOrder 01/Jul/2010 05/Jul/2010 06/Jul/2010 任何建议。.ToString(“dd/MMM/yyyy”) (假设您的数据是DateTime类型)这里仅阐述saille的答案: 对于DateTime来说,格式不是问题。DateTime实
dt
,它有一个列DateofOrder
DateofOrder
07/01/2010
07/05/2010
07/06/2010
我想将DateOfOrder
列中的这些日期格式化为
DateofOrder
01/Jul/2010
05/Jul/2010
06/Jul/2010
任何建议。.ToString(“dd/MMM/yyyy”)
(假设您的数据是DateTime类型)这里仅阐述saille的答案:
对于DateTime来说,格式不是问题。DateTime实际上是从公元1月1日午夜开始计算的滴答声的数量。所以,真的,它只是一个很长的时间。只有当需要将格式转换为字符串时,格式才会成为一个问题。因此,当您将其从数据表中拉出并准备输出时,或者将其作为字符串放入数据表中时(出于灵活性考虑,我不建议这样做),您必须着手处理格式问题。可以在saille建议的DateTime上使用.ToString调用进行格式化,
.ToString(“dd/MMM/yyyy”)
最明智的做法是确保您的DataTable是键入的,并且此列是DateTime类型。然后,当您实际将这些值打印到屏幕上时,您可以在该点设置格式,而不会干扰底层数据
如果这不可行,下面是我经常使用的一种扩展方法:
public static void Convert<T>(this DataColumn column, Func<object, T> conversion)
{
foreach(DataRow row in column.Table.Rows)
{
row[column] = conversion(row[column]);
}
}
它只适用于非类型化的数据表(例如,列类型需要是object,或者可能是string)。只需添加,您需要将扩展方法放在
.cs
文件中,通常是某种实用程序.cs
,然后在使用语句的帮助下访问该文件
这里提供了一个完整的示例:@Dean我不能理解你的观点…@Dean我想格式化这些日期并将其替换到datatable中。如果它们在数据表中存储为DateTime
,则“重新格式化”它们是没有意义的。如果它们存储为字符串,那么您应该只使用DateTime.Parse
然后使用DateTime.ToString(“dd/MMM/yyyy”)
。最好在数据库中设置格式query@Haosql Server中似乎没有这样的格式我使用了第二个选项,但是Convert
不是datatable的DataColumn上的方法。这就是为什么他有扩展方法。您需要将他使用的第一个方法添加到您的程序中,然后您应该能够使用convert。@Pandiya如果您注意答案的粗体部分,则必须添加一个扩展方法,这就是我在此处编写它的原因。另外,请注意,在填充数据表之前,您需要进行转换,否则这就没什么用了。不同的格式定制将像在另一个线程中一样工作,
myTable.Columns["DateOfOrder"].Convert(
val => DateTime.Parse(val.ToString()).ToString("dd/MMM/yyyy"));