Дата і час в Java 8. Порівняння дати і часу

липня
08
2014

Зміст

В новом Date Time API также появились удобные методы для сравнения дат и времени: compareTo(), isAfter(), isBefore() и isEqual(). Рассмотрим все эти методы на примерах.


import java.time.*;

public class Main {
	public static void main(String[] args) {
		LocalDateTime date = LocalDateTime.of(2002, Month.JANUARY, 10, 22, 56);
		LocalDateTime sameDate = LocalDateTime.of(2002, Month.JANUARY, 10, 22, 56);
		LocalDateTime dateMinusOneMinute = sameDate.minusMinutes(1);
		LocalDateTime datePlusOneMinute = sameDate.plusMinutes(1);
		ZonedDateTime zonedDate = ZonedDateTime.of(date, ZoneId.of("Brazil/East"));
		
		System.out.println("date: " + date);
		System.out.println("sameDate: " + sameDate);
		System.out.println("dateMinusOneMinute: " + dateMinusOneMinute);
		System.out.println("datePlusOneMinute: " + datePlusOneMinute);
		System.out.println("zonedDate: " + zonedDate);
		System.out.println();
		
		System.out.println("compareTo #1: " + date.compareTo( sameDate ));
		System.out.println("compareTo #2: " + date.compareTo( dateMinusOneMinute ));
		System.out.println("compareTo #3: " + date.compareTo( datePlusOneMinute ));
		System.out.println();
		
		System.out.println("isAfter #1: " + date.isAfter( sameDate ));
		System.out.println("isAfter #2: " + date.isAfter( dateMinusOneMinute ));
		System.out.println("isAfter #3: " + date.isAfter( datePlusOneMinute ));
		System.out.println();
		
		System.out.println("isBefore #1: " + date.isBefore( sameDate ));
		System.out.println("isBefore #2: " + date.isBefore( dateMinusOneMinute ));
		System.out.println("isBefore #3: " + date.isBefore( datePlusOneMinute ));
		System.out.println();
		
		System.out.println("isEqual #1: " + date.isEqual( sameDate ));
		System.out.println("isEqual #2: " + date.isEqual( dateMinusOneMinute ));
		System.out.println("isEqual #3: " + date.isEqual( datePlusOneMinute ));
		System.out.println();
		
		System.out.println("equals #1: " + date.equals( sameDate ));
		System.out.println("equals #2: " + date.equals( zonedDate ));
	}
}

// output:
// date: 2002-01-10T22:56
// sameDate: 2002-01-10T22:56
// dateMinusOneMinute: 2002-01-10T22:55
// datePlusOneMinute: 2002-01-10T22:57
// zonedDate: 2002-01-10T22:56-02:00[Brazil/East]
// 
// compareTo #1: 0
// compareTo #2: 1
// compareTo #3: -1
// 
// isAfter #1: false
// isAfter #2: true
// isAfter #3: false
// 
// isBefore #1: false
// isBefore #2: false
// isBefore #3: true
// 
// isEqual #1: true
// isEqual #2: false
// isEqual #3: false
// 
// equals #1: true
// equals #2: false

Метод compareTo() возвращает:

Метод isAfter() возвращает true ТОЛЬКО тогда, когда дата, метод которой вызывается, находится ПОСЛЕ даты, которая поступает в метод как параметром. Т.е., если для этих же объектов выполнить метод compareTo(), то он вернет 1.

Метод isBefore() возвращает true ТОЛЬКО тогда, когда дата, метод которой вызывается, находится ДО даты, которая поступает в метод как параметр. Т.е., если для этих же объектов выполнить метод compareTo(), то он вернет -1.

Метод isEqual() возвращает true если обе даты одинаковы.

Классы LocalDate и LocalTime имеют аналогичные методы для сравнения дат.

< Дата і час в Java 8. Зміна дати і часу Дата і час в Java 8. Тривалість, клас Duration >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі