У меня проблема, я пытаюсь прочитать из базы данных Sql, ее называется Тестирование и содержит таблицу под названием TimeDate, внутри которой он имеет свойство DoB (Дата рождения) со значением Date (not DateTime), Внутри визуальных студий я читаю из базы данных и возвращает Date в список переменных, называемый DoB, с типом данных DateTime (насколько я знаю, нет только типа данных "Дата"). Но когда я показываю информацию, которую я хочу видеть, это месяц, день и год (3/27/1990), но я действительно вижу это 3/27/1990 12:00:00 AM... я dont хотите, чтобы часть времени отображалась, даже если я использую свойство.Date, она по-прежнему отображает временную часть, есть ли способ избавиться от этого?
Это код, который я использую для чтения/записи в базу данных и отображения информации в консоли
static void Main(string[] args)
{
Console.WriteLine("What is the birthday you would like to input?(YYYY-MM-DD)");
DateTime newDate = Convert.ToDateTime(Console.ReadLine());
NewDate(newDate);
List<DateTime> dates = Read("FindDates", new SqlParameter[] { });
Console.WriteLine("\n");
foreach (DateTime date in dates)
{
Console.WriteLine(date);
}
Console.ReadKey();
}
private static string connectionString = @"Server = ONSHORE-PC\SQLEXPRESS;Database = Testing;Trusted_Connection = True;";
public static void NewDate(DateTime date)
{
try
{
SqlParameter[] parameters = new SqlParameter[] {
new SqlParameter("@TimeDate", date.Date)
};
Write("InputDate", parameters);
}
catch (Exception e)
{
Console.WriteLine("Error Writing to Database");
}
}
public static int Write(string statement, SqlParameter[] parameters)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(statement, con))
{
command.Parameters.AddRange(parameters);
command.CommandType = System.Data.CommandType.StoredProcedure;
con.Open();
return Convert.ToInt32(command.ExecuteScalar());
}
}
}
private static List<DateTime> Read(string statement, SqlParameter[] parameters)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(statement, con))
{
command.Parameters.AddRange(parameters);
command.CommandType = System.Data.CommandType.StoredProcedure;
con.Open();
SqlDataReader data = command.ExecuteReader();
List<DateTime> Dates = new List<DateTime>();
while (data.Read())
{
DateTime date = new DateTime();
date = Convert.ToDateTime(data["DoB"]);
Dates.Add(date);
}
return Dates;
}
}
}
Поскольку у вас уже есть DateTime
, вам просто нужно форматировать его строковое представление, например;
yourDateTime.ToString("M'/'dd'/'yyyy")
или
yourDateTime.ToString("M/dd/yyyy", CultureInfo.InvariantCulture)
Я сильно подозреваю, что вы используете только свой DateTime
как yourDateTime
и, вероятно, в части представления, это вызовет метод DateTime.ToString()
который использует стандартный формат даты и времени по умолчанию "G"
И этот спецификатор возвращает ShortDatePattern
и. Комбинация LongTimePattern
с разделенным пробелом вашего CurrentCulture
.
Если вы просто пытаетесь отобразить dd/MM/yyyy
var dateString = date.ToString("dd/MM/yyyy");