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

时间:2010-07-09 04:26:42

标签: c# datatable date-format

考虑我有一个数据表dt,它有一个列DateofOrder

DateofOrder
07/01/2010
07/05/2010
07/06/2010

我想将DateOfOrder列中的这些日期格式化为此

DateofOrder
01/Jul/2010
05/Jul/2010
06/Jul/2010

任何建议..

4 个答案:

答案 0 :(得分:11)

最明智的做法是确保输入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]);
    }
}

您可以在以下情况下使用:

myTable.Columns["DateOfOrder"].Convert(
    val => DateTime.Parse(val.ToString()).ToString("dd/MMM/yyyy"));

它只适用于无类型的DataTables(例如,列类型需要是对象,或者可能是字符串)。

答案 1 :(得分:0)

的ToString( “DD / MMM / YYYY”) (假设您的数据是DateTime类型)

答案 2 :(得分:0)

在这里简单阐述saille的答案:

对于DateTime,格式不是问题。 DateTime实际上是从1月1日午夜1点开始计时的滴答数。所以,实际上,这只是一个很长的时间。格式化只有在将其转换为字符串时才会成为问题。因此,当您将数据表拉出数据表并准备输出格式时,您必须处理格式化,或者将其作为字符串放入数据表中(我不建议这样做,以获得灵活性)目的)。可以使用saille建议的DateTime上的.ToString调用来完成格式化,.ToString("dd/MMM/yyyy")

答案 3 :(得分:0)

只需添加,您就需要将扩展​​方法放置到E文件中,通常是某种4,然后在F语句的帮助下进行访问。 / p>

此处提供了完整的示例:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods