Подтвердить что ты не робот

Как сравнить даты в С#

У меня две даты. Одна дата вводится, а другая - DateTime.Now. Я имею их в формате mm/dd/yyyy, это может быть даже формат m/d/yy. Обе даты являются нулевыми, т.е. Тип данных DateTime?, так как я могу передавать значение null также как вход. Теперь я хочу сравнить две даты только с форматом mm/dd/yyyy или m/d/yy.

4b9b3361

Ответ 1

Если у вас есть даты в переменных DateTime, они не имеют формата.

Вы можете использовать свойство Date, чтобы вернуть значение DateTime с временной долей, установленной до полуночи. Итак, если у вас есть:

DateTime dt1 = DateTime.Parse("07/12/2011");
DateTime dt2 = DateTime.Now;

if(dt1.Date > dt2.Date)
{
     //It a later date
}
else
{
     //It an earlier or equal date
}

Ответ 2

Если у вас есть дата в переменной DateTime, то есть ее объект DateTime и не содержит никакого формата. Отформатированная дата выражается как string, когда вы вызываете метод DateTime.ToString и предоставляете в нем формат.

Предположим, что у вас есть две переменные DateTime, вы можете использовать метод сравнения для сравнения,

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;

if (result < 0)
   relationship = "is earlier than";
else if (result == 0)
   relationship = "is the same time as";         
else
   relationship = "is later than";

Фрагмент кода, взятый из msdn.

Ответ 3

Во-первых, поймите, что объекты DateTime не отформатированы. Они просто хранят Год, Месяц, День, Час, Минуту, Второе и т.д. Как числовое значение, и форматирование происходит, когда вы хотите каким-то образом представить его как строку. Вы можете сравнивать объекты DateTime без их форматирования.

Чтобы сравнить дату ввода с DateTime.Now, вам нужно сначала проанализировать ввод в дату, а затем сравнить только части Год/Месяц/День:

DateTime inputDate;
if(!DateTime.TryParse(inputString, out inputDate))
    throw new ArgumentException("Input string not in the correct format.");

if(inputDate.Date == DateTime.Now.Date) {
    // Same date!
}