从DateTime删除时间

时间:2018-04-13 08:08:49

标签: c# date datetime web-applications

我从DataTable获得了DateTime SQL。但是,我想在textbox中显示仅限日期。我尝试转换但编译时错误继续说

  

方法ToString没有重载需要1个参数。

txtexpiry.Text = dtbl.Rows[0]["Safetyexpirydate"].ToString("dd/MM/yyy");

5 个答案:

答案 0 :(得分:4)

dtbl.Rows[0]["Safetyexpirydate"]返回object,但没有超载。 DateTime会这样做,因此您必须将对象强制转换为DateTime

txtexpiry.Text = ((DateTime)dtbl.Rows[0]["Safetyexpirydate"]).ToString("dd/MM/yyy");

如果对象可以是null,则必须先检查该对象。在这种情况下最简单的方法是使用is

 object o = dtbl.Rows[0]["Safetyexpirydate"];

 if (o is DateTime d)
 {
     txtexpiry.Text = d.ToString("dd/MM/yyy");
 }

答案 1 :(得分:4)

你应该Convert它,当你得到DateTime而不是Object来电时需要ToString()

txtexpiry.Text = Convert
  .ToDateTime(dtbl.Rows[0]["Safetyexpirydate"]) // we have DateTime
  .ToString("dd/MM/yyy");                       // which we represent as "dd/MM/yyy" 

答案 2 :(得分:0)

在进行类型转换之前,使用简单DateTime运算符将数据行对象转换为non-null并检查ternary (?)条件的对象。

txtexpiry.Text = dtbl.Rows[0]["Safetyexpirydate"] != null 
  ? ((DateTime)dtbl.Rows[0]["Safetyexpirydate"]).ToString("dd/MM/yyy")
  : "";

答案 3 :(得分:0)

txtexpiry.Text = String.Format("{0:dd/MM/yyyy}", dtbl.Rows[0]["Safetyexpirydate"]);

答案 4 :(得分:-3)

假设Safetyexpirydate已经是DateTime类型:

txtexpiry.Text = ((DateTime) dtbl.Rows[0]["Safetyexpirydate"]).Date