Изменение формата даты в C # при чтении из базы данных и установке метки

#c# #asp.net #sql-server #string #date

#c# #asp.net #sql-сервер #строка #Дата

Вопрос:

Я пытаюсь прочитать date поле из базы данных и установить для него значение label. Я использую следующий код,

 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();
  

Но это отображает значение данных в label в формате 02-05-1991 00:00:00 , но я хочу отобразить его в формате dd-mm-yyyy as 05-02-1991 . Итак, я попробовал следующий код:

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

Но он показывает эту ошибку:

Нет перегрузки для метода toString принимает 1 аргумент

Как я могу изменить формат?

Ответ №1:

Вам необходимо обработать значение даты как DateTime, а затем вызвать перегрузку toString из структуры DateTime, которая имеет требуемый параметр форматирования.

На самом деле вы преобразуете значение строки в строку, а строка ничего не знает о том, как форматировать дату.

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

Также обратите внимание на правильный формат для части месяцев. Это верхний регистр M . Нижний регистр m обозначает минуты.

Ответ №2:

Предполагая BirthDate , что представляет допустимое DateTime значение, преобразуйте его перед вызовом ToString() .

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

В настоящее время вы вызываете ToString() метод для класса object, а не DateTime для класса, поэтому нет перегрузки, которая допускает форматирование даты.

Комментарии:

1. Его рабочий я использую date формат в таблице SQL .. со значением 05-02-1991 , но в C #, когда я указываю формат, как dd-mm-yyyy он отображается в метке, 02-05-1991 означает ли это, что SQL хранит date формат как mm-dd-yyyy ??

2. Нет, это означает, что данная строка формата неверна, она должна быть dd-MM-yyyy такой, как mm в форматах даты и времени, что означает минуты , а не месяцы.