Есть разные способы сравнить даты Java. Внутри дата представлена как (длинный) момент времени - количество миллисекунд, прошедших с 1 января 1970 года. В Java Date является объектом, что означает, что он включает несколько методов для сравнения. Любой метод сравнения двух дат по существу сравнивает время дат.
Шаги
Метод 1 из 4. Использование compareTo
Шаг 1. Используйте compareTo
Date реализует Comparable, поэтому две даты можно сравнивать напрямую с помощью метода compareTo. Если даты относятся к одному и тому же моменту времени, метод возвращает ноль. Если сравниваемая дата предшествует аргументу даты, возвращается значение меньше нуля. Если сравниваемая дата находится после аргумента даты, возвращается значение больше нуля. Если даты совпадают, возвращается значение 0.
Шаг 2. Создайте объекты даты
Вам нужно будет создать каждый объект даты, прежде чем вы сможете начать их сравнивать. Один из способов сделать это - использовать класс SimpleDateFormat. Это позволяет легко вводить значения даты в объекты даты.
SimpleDateFormat sdf = новый SimpleDateFormat ("гггг-ММ-дд"); // Для объявления значений в новых объектах даты. используйте тот же формат даты при создании дат Date date1 = sdf.parse ("1995-02-23"); // date1 - 23 февраля 1995 г. Date date2 = sdf.parse ("2001-10-31"); // date2 - 31 октября 2001 г. Date date3 = sdf.parse ("1995-02-23"); // date3 - 23 февраля 1995 г.
Шаг 3. Сравните объекты даты
В приведенном ниже коде будет показан каждый случай - меньше, равно и больше.
date1.compareTo (date2); // date1 <date2, возвращает меньше 0 date2.compareTo (date1); // date2> date1, возвращает больше 0 date1.compareTo (date3); // date1 = date3, поэтому на консоль выводится 0
Метод 2 из 4: Использование Equals, After и Before
Шаг 1. Используйте равно, после и до
Сроки можно сравнивать с методами равенства, после и до. Если две даты относятся к одному и тому же моменту времени, метод equals вернет true. В примерах будут использоваться ранее созданные даты из метода compareTo.
Шаг 2. Сравните, используя предыдущий метод
В приведенном ниже коде показаны истинный и ложный случай. Если date1 раньше date2, before возвращает true. Если это не так, before возвращает false.
System.out.print (date1.before (date2)); // выводит истину System.out.print (date2.before (date2)); // выводит false
Шаг 3. Сравните, используя метод после
В приведенном ниже коде показаны истинный и ложный случай. Если date2 находится после date1, after возвращает true. Если это не так, после возвращает false.
System.out.print (date2.after (date1)); // выводит true System.out.print (date1.after (date2)); // выводит false
Шаг 4. Сравните, используя метод равенства
В приведенном ниже коде показаны истинный и ложный случай. Если даты равны, equals возвращает true. Если это не так, equals возвращает false.
System.out.print (date1.equals (date3)); // выводит true System.out.print (date1.equals (date2)); // выводит false
Метод 3 из 4: использование класса Calendar
Шаг 1. Воспользуйтесь календарем
Класс календаря также имеет методы compareTo, equals, after и before, которые работают так же, как описано выше для класса даты. Поэтому, если информация о дате хранится в календаре, нет необходимости извлекать дату только для сравнения.
Шаг 2. Создайте экземпляры календаря
Чтобы использовать методы Calendar, вам понадобится несколько экземпляров Calendar. К счастью, вы можете просто получить время из уже созданных экземпляров Date.
Календарь cal1 = Calendar.getInstance (); // объявляет cal1 Calendar cal2 = Calendar.getInstance (); // объявляет cal2 Calendar cal3 = Calendar.getInstance (); // объявляет cal3 cal1.setTime (date1); // применяет дату к cal1 cal2.setTime (date2); cal3.setTime (date3);
Шаг 3. Сравните cal1 и cal2, используя ранее
Приведенный ниже код должен выводить истину, поскольку cal1 стоит перед cal2.
System.out.print (cal1.before (cal2)); // напечатает истину
Шаг 4. Сравните cal1 и cal2, используя after
Приведенный ниже код должен печатать false, поскольку cal1 стоит перед cal2.
System.out.print (cal1.after (cal2)); // выводит false
Шаг 5. Сравните cal1 и cal2, используя равенства
В приведенном ниже коде будет показан пример как истинного, так и ложного случая. Условие зависит от сравниваемых экземпляров календаря. Код должен печатать «истина», затем «ложь» в следующей строке.
System.out.println (cal1.equals (cal3)); // выводит истину: cal1 == cal3 System.out.print (cal1.equals (cal2)); // выводит false: cal1! = cal2
Метод 4 из 4: использование getTime
Шаг 1. Используйте getTime
Также возможно напрямую сравнить момент времени двух дат, хотя любой из предыдущих подходов, вероятно, будет более читаемым и предпочтительным. Это будет сравнение двух примитивных типов данных, поэтому это можно сделать с помощью "" и "==".
Шаг 2. Создайте объекты длительного времени
Прежде чем вы сможете сравнивать даты, вы должны создать длинные целые числа с данными из ранее созданных объектов Date. К счастью, большую часть работы за вас сделает метод getTime ().
long time1 = getTime (дата1); // объявляет примитив time1 от date1 long time2 = getTime (date2); // объявляет примитив time2 от date2
Шаг 3. Проведите меньшее сравнение
Используйте символ «меньше» (<) для сравнения этих двух целочисленных значений. Поскольку time1 меньше времени 2, должно быть напечатано первое сообщение. Оператор else включен для правильного синтаксиса.
if (время1 <время2) {System.out.println ("дата1 раньше даты2"); // будет печатать, поскольку time1 <time2} else {System.out.println ("date1 не раньше date2"); }
Шаг 4. Проведите большее, чем сравнение
Используйте символ «больше» (>) для сравнения этих двух целочисленных значений. Поскольку time1 больше времени 2, должно быть напечатано первое сообщение. Оператор else включен для правильного синтаксиса.
if (время2> время1) {System.out.println ("дата2 после даты1"); // будет печатать, поскольку time2> time1} else {System.out.println ("date2 не позже date1"); }
Шаг 5. Проведите сравнение с равенством
Используйте символ для проверки равенства (==) для сравнения этих двух целочисленных значений на равенство. Поскольку time1 равно time3, должно быть напечатано первое сообщение. Если программа переходит к оператору else, это означает, что времена не равны.
if (time1 == time2) {System.out.println ("даты равны"); } else {System.out.println ("даты не равны"); // будет печатать с time1! = time2}