代码之家  ›  专栏  ›  技术社区  ›  ACP

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

  •  7
  • ACP  · 技术社区  · 14 年前

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

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

    我想把这些日期格式化为 DateOfOrder 列到此

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

    有什么建议……

    3 回复  |  直到 14 年前
        1
  •  11
  •   Rex M    14 年前

    要做的最聪明的事情是确保您的数据表是类型化的,而这个列的类型是日期时间。然后,当您实际将值打印到屏幕上时,您可以在该点设置格式,而不必破坏基础数据。

    如果这不可行,这里有一个 扩展方法 我经常使用:

    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"));
    

    它只适用于非类型化的数据表(例如,列类型需要是对象,或者可能是字符串)。

        2
  •  0
  •   saille    14 年前

    .ToString(“日/月/年”) (假设您的数据是日期时间类型)

        3
  •  0
  •   fire.eagle    14 年前

    请在这里阐述赛尔的答案:

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