트랙
/
Java
Java
/
학습 과정
/
날짜와 시간
날짜

날짜와 시간 에서 Java

6개의 연습 문제

날짜와 시간 소개

Java 8에서 도입된 java.time 패키지에는 날짜와 시간을 다루기 위한 여러 클래스가 들어 있어요.

LocalDate

java.time.LocalDate 클래스는 ISO-8601 달력 체계에서 시간대 없이 날짜를 나타내요. 2007-12-03 같은 값이에요:

LocalDate date = LocalDate.of(2007, 12, 3);

날짜는 다른 날짜와 비교할 수 있어요:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

LocalDate 인스턴스에는 날짜의 각 부분을 가져오는 게터가 있어요:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

LocalDate 인스턴스에는 시간 단위를 더하는 메서드도 있어요.

Note

이 메서드들은 새로운 LocalDate 인스턴스를 반환하고 기존 인스턴스는 바꾸지 않아요. LocalDate 클래스는 불변이기 때문이에요.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

java.time.LocalDateTime 클래스는 ISO-8601 달력 체계에서 시간대 없이 날짜와 시간을 나타내요. 2007-12-03T10:15:30 같은 값이에요:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

LocalDate 클래스와 마찬가지로, LocalDateTime 인스턴스에도 다른 LocalDateTime과 비교하거나 시간 단위를 더하는 같은 메서드들이 있어요.

LocalDate 인스턴스를 LocalDateTime으로 변환할 수도 있어요:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

날짜와 시간 형식 지정

LocalDate와 LocalDateTime은 모두 String으로 변환하거나 String에서 변환할 때 ISO-8601 표준 표기법을 사용해요.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

이런 식으로 다른 형식을 사용해 String에서 LocalDate나 LocalDateTime을 파싱하는 것은 불가능해요. 대신 사용자 지정 형식으로 날짜를 서식 지정하려면 java.time.format.DateTimeFormatter를 사용해야 해요:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

사용자 지정 형식을 만들 때 로케일을 지정해서 지역마다 다른 형식으로 서식을 지정하고 파싱할 수도 있어요:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

날짜와 시간 배우기