[Java] 13. 날짜와 시간 관련 연산 메소드
[Java] 12. 날짜 다루기-1 [Java] 12. 날짜 다루기-1[Java] 11. Stream 마무리-2 [Java] 11. Stream 마무리-2[Java] 10. Stream 마무리-1 [Java] 10. Stream 마무리-1 [Java] 9. 다양한 Stream의 생성 [Java] 9. 다양한 Stream의 생성 [Jav
sesoc.tistory.com
지난 스토리에서 하나의 특정 날짜를 생성하고 그 날짜를 기준으로 plus, minus 를 실시하는 메소드에 데해서 알아보았다.
이번에는 두 개의 날짜를 비교하는 메소드와 포맷을 하는 메소드를 살펴보자
먼저 두 개의 날짜를 비교하는 메소드가 어떤 것들이 있는지 아래의 표를 확인해보자.
메소드 명 | 설명 |
isAfter() | 인자보다 미래 시간이라면 true 반환 |
isBefore() | 인자보다 과거 시간이면 true 반환 |
isEqual() | 인자와 같은 시간이면 true 반환 |
compareTo() |
compareTo() > 0 : 인자보다 미래 시간 compareTo() < 0 : 인자보다 과거 시간 compareTo() == : 인자와 같은 시간 |
전달인자로 비교할 날짜 타입의 데이터를 전달하여 미래인지 과거인지 살펴볼 수 있다.
아래의 코드를 보면 더욱 잘 이해될 것이다.
CompareDate.java
import java.time.LocalDateTime;
public class CompareDate {
public static void main(String[] args) {
LocalDateTime koreanWar = LocalDateTime.of(1950, 6, 25, 0, 0, 0);
LocalDateTime independence = LocalDateTime.of(1945, 8, 15, 0, 0);
LocalDateTime surrender = LocalDateTime.of(1945, 8, 15, 0, 0);
if (independence.isBefore(koreanWar))
System.out.println("광복 이후 한국전쟁이 발발하였다. ");
if (koreanWar.isAfter(independence))
System.out.println("한국전쟁은 광복 이후에 발발하였다.");
if (independence.isEqual(surrender))
System.out.println("일왕의 항복과 대한독립은 같은 날에 일어났다.");
if (independence.compareTo(surrender) == 0)
System.out.println("일왕의 항복과 대한독립은 같은 날에 일어났다.");
}
}
위의 코드를 실행하면 다음과 같은 결과가 출력된다.
광복 이후 한국전쟁이 발발하였다.
한국전쟁은 광복 이후에 발발하였다.
일왕의 항복과 대한독립은 같은 날에 일어났다.
일왕의 항복과 대한독립은 같은 날에 일어났다.
이번에는 날짜시간 객체를 출력하기 위해 포맷을 지정하는 방법을 알아보자.
날짜 시간 데이터를 특정 양식에 맞춰 포맷을 하기 위해서는 몇 개의 정해진 패턴을 이용하면 되는데, 이러한 패턴은 다른 언어의 포맷형식과도 대동소이 하므로 이미 다른 언어에서 포맷기능을 사용해 보았다면 이해하기 쉬울 것이다.
패턴 | 설명 |
yyyy | 년도 |
MM | 월 |
dd | 일 |
HH | 시 |
mm | 분 |
ss | 초 |
SSS | 밀리 세컨드 |
위에서 지정한 패턴을 이용하여 출력하기 위해서는 출력형식을 변환할 수 있어야 하는데 그것은 다음의 메소드를 이용하면 된다.
한 가지 주의할 것은 월에 해당하는 패턴은 대문자 MM이고 시간의 분에 해당하는 패턴은 소문자 mm 이라는 것 정도이다.
그럼, 코드로 살펴보자.
FormatDate.java
public class FormatDate {
public static void main(String[] args) {
LocalDateTime localDateTime1 = LocalDateTime.of(2019, 5, 26, 10, 0, 0);
String format1 = localDateTime1.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
String format2 = localDateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
System.out.println("localDateTime = " + localDateTime1);
System.out.println("Format1 = " + format1);
System.out.println("Format2 = " + format2);
// DateTimeFormat에 등록된 "ISO 8601" 날짜 포맷 사용
String format3 = localDateTime1.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println("localDateTime = " + localDateTime1);
System.out.println("Format3 = " + format3);
}
}
위 코드의 실행 결과는 다음과 같다.
localDateTime = 2019-05-26T10:00
Format1 = 20190526100000000
Format2 = 2019-05-26 10:00:00:000
localDateTime = 2019-05-26T10:00
Format3 = 2019-05-26
여기까지 하면 Java 8에서 새롭게 추가된 날짜 시간을 다루는 java.time.* 패키지의 주요 클래스과 관련 패키지를 살펴보았다.
이전에 제공되었던 Date나 Calendar 클래스의 불편함이 보다 완화되었음을 알 수 있다.
다음에는 새롭게 추가된 기능에 대해서 알아보도록 하자!!!
[Java] 13. 날짜와 시간 관련 연산 메소드 (0) | 2025.04.16 |
---|---|
[Java] 12. 날짜 다루기 (0) | 2025.04.16 |
[Java] 11. Stream 마무리-2 (0) | 2023.09.22 |
댓글 영역