"java.time"은 날짜와 시간을 표기하는데에만 사용되어야 합니다

 

DateCalendar 클래스는 낡고, 비웃음을 많이 받아온 클래스입니다. 특히 이 클래스들은 멀티 스레드 환경에서 항상 혼란스럽고 적절하게 사용하기가 어려웠습니다. 이를 대체하기 위해 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. :star2:

원문으로 바로가기

Star This Project