我阅读了许多帮助文章,并尝试了几种不同的方法来解决该问题,但均未成功。
当我只拥有代码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:无法从“对象”转换为“长”
答案 0 :(得分:1)
由于DateTime
constructor花了很长时间,但您传递了一个对象,所以您得到了错误:
DateTime thisdate = new DateTime(vo2.Rows[0]["Start"]);
我想DataTable
中的第一列已经是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);
答案 1 :(得分:0)
您应该Convert
读取的值(注意,vo2.Rows[0]["Start"]
的类型为object
,当您需要DateTime
时):
DateTime thisdate = Convert.ToDateTime(vo2.Rows[0]["Start"]);
// MM - if you want leading zero; note, that "mm" stands for minutes
line.Cells[5].Value = thisdate.ToString("dd/MM/yyyy");
说明正在发生的事情:
vo2.Rows[0]["Start"
的类型为object
new DateTime(long ticks)
想要一个long
参数long
)