考虑我有一个数据dt
表,它有一个列DateofOrder
,
DateofOrder
07/01/2010
07/05/2010
07/06/2010
我想将DateOfOrder
列中的这些日期格式化为
DateofOrder
01/Jul/2010
05/Jul/2010
06/Jul/2010
任何建议..
考虑我有一个数据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 日午夜开始计数的滴答数所以,真的,它只是一个长。仅当需要将其转换为字符串时,格式化才会成为问题。因此,当您将其从数据表中拉出并准备输出时,您必须去处理格式设置,或者将其作为字符串放入数据表中(为了灵活性,我不建议这样做目的)。格式化可以通过 Saille 建议的 DateTime 上的 .ToString 调用来完成,.ToString("dd/MMM/yyyy")
只是要补充一点,您需要将扩展方法放入.cs
文件中,通常是某种 a ,然后在语句Utility.cs
的帮助下访问该文件。using
此处提供了一个完整的示例:https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods