Change date format in C# when reading from database and setting to label

此生再无相见时 提交于 2021-02-08 08:32:22

问题


I am trying to read a date field from database and set it to a label field. Im using the following code,

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
con.Open();

SqlCommand cmd = new SqlCommand("select BirthDate from Student where Name=@name", con);
cmd.Parameters.AddWithValue("@name", "Mano");

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

lblName.Text = dt.Rows[0]["Date"].ToString();

But this displays the data value in label in the format 02-05-1991 00:00:00 but I want to display it in format dd-mm-yyyy as 05-02-1991. So I tried the following code:

lblName.Text = dt.Rows[0]["BirthDate"].ToString("dd-mm-yyyy");

But it shows this error:

No overload for method ToString takes 1 argument

How can I change the format?


回答1:


Assuming BirthDate represents a valid DateTime, convert it before calling ToString().

lblName.Text = Convert.ToDateTime(dt.Rows[0]["BirthDate"]).ToString("dd-mm-yyyy");

You're currently calling the ToString() method on the object class, not the DateTime class, so there's no overload that allows for a date formatter.




回答2:


You need to treat your date value as a DateTime and then call the overload of ToString from the DateTime structure that has the required formatting option.

Actually you are converting the row value to a string and a string knows nothing about how to format a date.

DateTime t = dt.Rows[0].Field<DateTime>("Date");
lblName.Text = t.ToString("dd-MM-yyyy");

Also pay attention to the correct format for the Months part. It is an uppercase M. The lowercase m is for minutes.



来源:https://stackoverflow.com/questions/39933065/change-date-format-in-c-sharp-when-reading-from-database-and-setting-to-label

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!