首页 > 解决方案 > C# DateTime 字段未格式化

问题描述

我已阅读大量帮助文本并尝试了几种不同的方法来解决该问题,但均未成功。

当我简单地获得代码时,line.Cells[5].Value = vo2.Rows[0]["Start"].toString();我得到3/9/2019 8:00:00的结果是datagridview. 我希望这是dd/mm/yyyy格式。

我怎样才能做到这一点?

SmartsheetDataAdapter dataAdapter4 = new SmartsheetDataAdapter(sql10, connection);
 DataTable vo2 = new DataTable();
 dataAdapter4.Fill(vo2);
 //double vocost = 0;

 if (vo2.Rows.Count > 0)
 {
     DateTime thisdate = new DateTime(vo2.Rows[0]["Start"]);
     //DateTime deldate = DateTime.ParseExact(dd1, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
     line.Cells[5].Value = thisdate.ToString("dd/M/yyyy");

当前代码给出错误:

论点 1:无法从 'object' 转换为 'long'

标签: c#visual-studio-2015

解决方案


您收到错误是因为DateTime构造函数需要很长时间,但您传递了一个对象:

DateTime thisdate = new DateTime(vo2.Rows[0]["Start"]);

我猜想中的第一列DataTable已经是 a DateTime,然后使用这个:

DateTime thisdate = vo2.Rows[0].Field<DateTime>("Start");

否则你必须解析它,例如:

string dtVal = vo2.Rows[0]["Start"].ToString(); // 3/9/2019 8:00:00
DateTime thisdate = DateTime.ParseExact(dtVal, "d'/'M'/'yyyy h:mm:ss", null);

甚至更简单,因为您不需要此输入,ParseExact但您可以使用Parse

DateTime thisdate = DateTime.Parse(dtVal);

推荐阅读