Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以格式化数据表的日期列?_C#_Datatable_Date Format - Fatal编程技术网

C# 是否可以格式化数据表的日期列?

C# 是否可以格式化数据表的日期列?,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实

假设我有一个datatable
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"));