Date
와 Calendar
클래스는 낡고, 비웃음을 많이 받아온 클래스입니다.
특히 이 클래스들은 멀티 스레드 환경에서 항상 혼란스럽고 적절하게 사용하기가 어려웠습니다.
이를 대체하기 위해 JodaTime
이 많이 사용되었지만, 이제는 훨씬 더 나은 선택지가 내장되어 있습니다.
Java 8의 JSR 310 부터는 다음과 같은 클래스들을 제공합니다.
클래스 | 사용처 |
---|---|
LocalDate | a date, without time of day, offset, or zone |
LocalTime | the time of day, without date, offset, or zone |
LocalDateTime | the date and time, without offset, or zone |
OffsetDate | a date with an offset such as +02:00, without time of day, or zone |
OffsetTime | the time of day with an offset such as +02:00, without date, or zone |
OffsetDateTime | the date and time with an offset such as +02:00, without a zone |
ZonedDateTime | the date and time with a time zone and offset |
YearMonth | a year and month |
MonthDay | month and day |
Year/MonthOfDay/DayOfWeek/… | classes for the important fields |
DateTimeFields | stores a map of field-value pairs which may be invalid |
Calendrical | access to the low-level API |
Period | a descriptive amount of time, such as “2 months and 3 days” |
규칙을 어긴 코드
Date now = new Date(); // 규칙을 어긴 코드
DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
Calendar christmas = Calendar.getInstance(); // 규칙을 어긴 코드
christmas.setTime(df.parse("25.12.2020"));
규칙을 준수한 해결책
LocalDate now = LocalDate.now(); // 시간 정보 없이, 달력의 날짜를 가져옵니다.
LocalTime now2 = LocalTime.now(); // 날짜 정보 없이, 현재의 시간을 가져옵니다.
LocalDate christmas = LocalDate.of(2020,12,25);
If you like SONARKUBE, don’t forget to give me a star.