将DataRow中的DateTime转换为格式化的日期字符串

本文关键字:格式化 日期 字符串 转换 DataRow 中的 DateTime | 更新日期: 2023-09-27 18:03:14

我希望有一些东西我看不清楚,但为了简化,我有下面的代码

foreach (DataRow row in dt.Rows)
{
  row["StartOn"] = Convert.ToDateTime(row["StartOn"].ToString()).ToString("MMM dd").ToString();
}

如果我运行下面的代码,我得到" Aug 09 "

Convert.ToDateTime(row["StartOn"].ToString()).ToString("MMM dd").ToString();

如果我看看行[" StartOn "]是什么在这个变化后,它包含" 8/9/2016 12:00:00 AM "

我无法将我的DataRow格式化为"MMM dd"格式

将DataRow中的DateTime转换为格式化的日期字符串

StartOn显然是一个DateTime类型。日期时间类型没有格式。它们是指定年、月、日期和时间(以及其他内容)的对象。您在转换中所做的只是剥离时间,以便新的datetime具有12:00 am的时间

什么是dt.Columns["StartOn"]。我怀疑这是DateTime。让我把你的一行代码分解成两行。

string s = Convert.ToDateTime(row["StartOn"].ToString()).ToString("MMM dd").ToString();
row["StartOn"] = s;

在第1行中,您将DateTime对象转换为字符串对象。但是在第2行,您隐式地将string转换为DateTime

var dt = new DataTable();
dt.Columns.Add("StartOn", typeof(DateTime));
dt.Rows.Add(DateTime.Today);
foreach (DataRow row in dt.Rows) {
    var data = Convert.ToDateTime(row["StartOn"].ToString()).ToString("MMM dd").ToString();
    Console.WriteLine($"Type of stored data is: {data.GetType()}");
    row["StartOn"] = data;
}
// fetch the data
var fetchedData = dt.Rows[0][0];
Console.WriteLine($"Type of Fetched Data is: {fetchedData.GetType()}");

顺便说一句,您可以使用下面的行来进行转换

((DateTime)row["StartOn"]).ToString("MMM dd");