我从DataTable
获得了DateTime
SQL
。但是,我想在textbox
中显示仅限日期。我尝试转换但编译时错误继续说
方法ToString没有重载需要1个参数。
txtexpiry.Text = dtbl.Rows[0]["Safetyexpirydate"].ToString("dd/MM/yyy");
答案 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