#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
в форматах даты и времени, что означает минуты , а не месяцы.