繁体   English   中英

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

[英]Is it possible to format a date column of a datatable?

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

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

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

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

任何建议..

最明智的做法是确保您的 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"));

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

.ToString("dd/MMM/yyyy")(假设你的数据是 DateTime 类型)

只是在这里阐述了saille的回答:

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

只是补充一下,您需要将扩展​​方法放入.cs文件中,通常是某种Utility.cs ,然后在using语句的帮助下访问该文件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM