Как сравнить DateTime в C #? - PullRequest
113 голосов
/ 17 июня 2010

Я не хочу, чтобы пользователь сообщал дату или время.

Как я могу сравнить, если введенные дата и время МЕНЬШЕ, чем текущее время?

Если текущая дата и время 17 июня 2010, 12:25, я хочу пользователяне может дать дату до 17 июня -2010 и время до 12:25.

Как и моя функция, возвращает false, если время, введенное пользователем, - 16 июня-2010, а время 12:24

Ответы [ 6 ]

279 голосов
/ 17 июня 2010

Microsoft также внедрила операторы '<' и '>'.Таким образом, вы используете их для сравнения двух дат.

if (date1 < DateTime.Now)
   Console.WriteLine("Less than the current time!");
154 голосов
/ 17 июня 2010

MSDN: DateTime.Compare

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 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";

Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
// The example displays the following output:
//    8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM
19 голосов
/ 25 октября 2016

Ответ MuSTaNG говорит сам за себя, но я все еще добавляю его, чтобы сделать его немного более сложным, со ссылками и всем.


Обычные операторы

доступны для DateTime начиная с .NET Framework 1.1. Кроме того, сложение и вычитание DateTime объектов также возможно с использованием обычных операторов + и -.

Один пример из MSDN:

Равенство:
System.DateTime april19 = new DateTime(2001, 4, 19);
System.DateTime otherDate = new DateTime(1991, 6, 5);

// areEqual gets false.
bool areEqual = april19 == otherDate;

otherDate = new DateTime(2001, 4, 19);
// areEqual gets true.
areEqual = april19 == otherDate;

Аналогичным образом могут использоваться и другие операторы.

Вот список всех операторов , доступных для DateTime.

1 голос
/ 15 марта 2019

В общем случае вам нужно сравнить DateTimes с тем же Kind:

if (date1.ToUniversalTime() < date2.ToUniversalTime())
    Console.WriteLine("date1 is earlier than date2");

Пояснения от MSDN о DateTime.Compare (Это также относится к таким операторам, как >, <, == и т. Д.):

Чтобы определить отношение t1 к t2, метод Compare сравниваетсвойство Ticks для t1 и t2, но игнорирует их свойство Kind .Перед сравнением объектов DateTime убедитесь, что объекты представляют время в одном часовом поясе.

Таким образом, простое сравнение может дать неожиданный результат при работе с DateTimes, представленными в разных часовых поясах.

1 голос
/ 04 ноября 2016
//Time compare.
private int CompareTime(string t1, string t2)
{
    TimeSpan s1 = TimeSpan.Parse(t1);
    TimeSpan s2 = TimeSpan.Parse(t2);
    return s2.CompareTo(s1);
}
0 голосов
/ 31 июля 2018
public static bool CompareDateTimes(this DateTime firstDate, DateTime secondDate) 
{
   return firstDate.Day == secondDate.Day && firstDate.Month == secondDate.Month && firstDate.Year == secondDate.Year;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...