4 способа сравнить две даты на Java

Оглавление:

4 способа сравнить две даты на Java
4 способа сравнить две даты на Java

Видео: 4 способа сравнить две даты на Java

Видео: 4 способа сравнить две даты на Java
Видео: Как изменить программы по умолчанию в Windows 11 2024, Апрель
Anonim

Есть разные способы сравнить даты Java. Внутри дата представлена как (длинный) момент времени - количество миллисекунд, прошедших с 1 января 1970 года. В Java Date является объектом, что означает, что он включает несколько методов для сравнения. Любой метод сравнения двух дат по существу сравнивает время дат.

Шаги

Метод 1 из 4. Использование compareTo

4301351 1
4301351 1

Шаг 1. Используйте compareTo

Date реализует Comparable, поэтому две даты можно сравнивать напрямую с помощью метода compareTo. Если даты относятся к одному и тому же моменту времени, метод возвращает ноль. Если сравниваемая дата предшествует аргументу даты, возвращается значение меньше нуля. Если сравниваемая дата находится после аргумента даты, возвращается значение больше нуля. Если даты совпадают, возвращается значение 0.

4301351 2
4301351 2

Шаг 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 г.

4301351 3
4301351 3

Шаг 3. Сравните объекты даты

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

    date1.compareTo (date2); // date1 <date2, возвращает меньше 0 date2.compareTo (date1); // date2> date1, возвращает больше 0 date1.compareTo (date3); // date1 = date3, поэтому на консоль выводится 0

Метод 2 из 4: Использование Equals, After и Before

4301351 4
4301351 4

Шаг 1. Используйте равно, после и до

Сроки можно сравнивать с методами равенства, после и до. Если две даты относятся к одному и тому же моменту времени, метод equals вернет true. В примерах будут использоваться ранее созданные даты из метода compareTo.

4301351 5
4301351 5

Шаг 2. Сравните, используя предыдущий метод

В приведенном ниже коде показаны истинный и ложный случай. Если date1 раньше date2, before возвращает true. Если это не так, before возвращает false.

    System.out.print (date1.before (date2)); // выводит истину System.out.print (date2.before (date2)); // выводит false

4301351 6
4301351 6

Шаг 3. Сравните, используя метод после

В приведенном ниже коде показаны истинный и ложный случай. Если date2 находится после date1, after возвращает true. Если это не так, после возвращает false.

    System.out.print (date2.after (date1)); // выводит true System.out.print (date1.after (date2)); // выводит false

4301351 7
4301351 7

Шаг 4. Сравните, используя метод равенства

В приведенном ниже коде показаны истинный и ложный случай. Если даты равны, equals возвращает true. Если это не так, equals возвращает false.

    System.out.print (date1.equals (date3)); // выводит true System.out.print (date1.equals (date2)); // выводит false

Метод 3 из 4: использование класса Calendar

4301351 8
4301351 8

Шаг 1. Воспользуйтесь календарем

Класс календаря также имеет методы compareTo, equals, after и before, которые работают так же, как описано выше для класса даты. Поэтому, если информация о дате хранится в календаре, нет необходимости извлекать дату только для сравнения.

4301351 9
4301351 9

Шаг 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);

4301351 10
4301351 10

Шаг 3. Сравните cal1 и cal2, используя ранее

Приведенный ниже код должен выводить истину, поскольку cal1 стоит перед cal2.

    System.out.print (cal1.before (cal2)); // напечатает истину

4301351 11
4301351 11

Шаг 4. Сравните cal1 и cal2, используя after

Приведенный ниже код должен печатать false, поскольку cal1 стоит перед cal2.

    System.out.print (cal1.after (cal2)); // выводит false

4301351 12
4301351 12

Шаг 5. Сравните cal1 и cal2, используя равенства

В приведенном ниже коде будет показан пример как истинного, так и ложного случая. Условие зависит от сравниваемых экземпляров календаря. Код должен печатать «истина», затем «ложь» в следующей строке.

    System.out.println (cal1.equals (cal3)); // выводит истину: cal1 == cal3 System.out.print (cal1.equals (cal2)); // выводит false: cal1! = cal2

Метод 4 из 4: использование getTime

4301351 13
4301351 13

Шаг 1. Используйте getTime

Также возможно напрямую сравнить момент времени двух дат, хотя любой из предыдущих подходов, вероятно, будет более читаемым и предпочтительным. Это будет сравнение двух примитивных типов данных, поэтому это можно сделать с помощью "" и "==".

4301351 14
4301351 14

Шаг 2. Создайте объекты длительного времени

Прежде чем вы сможете сравнивать даты, вы должны создать длинные целые числа с данными из ранее созданных объектов Date. К счастью, большую часть работы за вас сделает метод getTime ().

    long time1 = getTime (дата1); // объявляет примитив time1 от date1 long time2 = getTime (date2); // объявляет примитив time2 от date2

4301351 15
4301351 15

Шаг 3. Проведите меньшее сравнение

Используйте символ «меньше» (<) для сравнения этих двух целочисленных значений. Поскольку time1 меньше времени 2, должно быть напечатано первое сообщение. Оператор else включен для правильного синтаксиса.

    if (время1 <время2) {System.out.println ("дата1 раньше даты2"); // будет печатать, поскольку time1 <time2} else {System.out.println ("date1 не раньше date2"); }

4301351 16
4301351 16

Шаг 4. Проведите большее, чем сравнение

Используйте символ «больше» (>) для сравнения этих двух целочисленных значений. Поскольку time1 больше времени 2, должно быть напечатано первое сообщение. Оператор else включен для правильного синтаксиса.

    if (время2> время1) {System.out.println ("дата2 после даты1"); // будет печатать, поскольку time2> time1} else {System.out.println ("date2 не позже date1"); }

4301351 17
4301351 17

Шаг 5. Проведите сравнение с равенством

Используйте символ для проверки равенства (==) для сравнения этих двух целочисленных значений на равенство. Поскольку time1 равно time3, должно быть напечатано первое сообщение. Если программа переходит к оператору else, это означает, что времена не равны.

    if (time1 == time2) {System.out.println ("даты равны"); } else {System.out.println ("даты не равны"); // будет печатать с time1! = time2}

Рекомендуемые: