만들고 있는 프로젝트에서 내용을 등록하거나 수정한 뒤 일정 시간이 지나야 재 수정 및 삭제가 가능한 기능을 구현하려고 한다.
이를 위해 ChatGPT를 이용해 시각의 차이를 구하는 방법을 물어보았다.
Duration 클래스는 두 시각의 차이를 나타내는 클래스이며, 다음과 같은 메서드를 가지고 있습니다:
getSeconds(): 해당 Duration 객체의 초를 반환합니다.
getNano(): 해당 Duration 객체의 나노초를 반환합니다.
plus(Duration duration): 해당 Duration 객체와 매개 변수로 받은 Duration 객체를 더한 결과를 반환합니다.
minus(Duration duration): 해당 Duration 객체와 매개 변수로 받은 Duration 객체를 뺀 결과를 반환합니다.
toDays(): 해당 Duration 객체의 일 수를 반환합니다.
toHours(): 해당 Duration 객체의 시간 수를 반환합니다.
toMinutes(): 해당 Duration 객체의 분 수를 반환합니다.
toMillis(): 해당 Duration 객체의 밀리초 수를 반환합니다.
toNanos(): 해당 Duration 객체의 나노초 수를 반환합니다.
그 외에도, between() 메서드를 사용하여 두 시각의 차이를 계산할 수 있고, ofXXX() 메서드를 사용하여 Duration 객체를 생성할 수 있습니다. 또한, Duration 객체를 문자열로 표현하는 toString() 메서드도 제공됩니다.
ChronoUnit 클래스는 시간 단위를 나타내는 열거형(enum) 클래스로, Java 8의 java.time 패키지에서 제공됩니다. 주요한 시간 단위와 관련된 상수들을 포함하고 있습니다. 다음은 ChronoUnit 클래스의 일부 중요한 상수들입니다:
NANOS: 나노초 단위
MICROS: 마이크로초 단위
MILLIS: 밀리초 단위
SECONDS: 초 단위
MINUTES: 분 단위
HOURS: 시간 단위
DAYS: 일 단위
WEEKS: 주 단위
MONTHS: 월 단위
YEARS: 년 단위
DECADES: 10년 단위
CENTURIES: 100년 단위
MILLENNIA: 1000년 단위
ERAS: 시대 단위
ChronoUnit 클래스는 시간 단위 간의 차이를 계산하거나 시간 단위로 시간을 증감하는 등 다양한 시간 연산에 사용됩니다. 예를 들어 ChronoUnit.SECONDS.between(LocalTime startInclusive, LocalTime endExclusive) 메서드를 사용하여 두 시간 사이의 초 차이를 계산할 수 있습니다.
또한, ChronoUnit 클래스는 LocalDateTime, LocalDate, LocalTime 등과 함께 사용할 수 있는 plus(), minus() 메서드 등을 제공합니다. 이를 통해 특정 시간 단위로 시간을 증가 또는 감소시킬 수 있습니다.
예를 들어, LocalDateTime 객체에 plus(long amountToAdd, TemporalUnit unit) 메서드를 사용하여 특정 시간 단위로 시간을 증가시킬 수 있습니다. 예를 들어, localDateTime.plus(1, ChronoUnit.HOURS)는 localDateTime을 1시간 뒤로 설정한 새로운 LocalDateTime 객체를 반환합니다.
ChronoUnit 클래스는 Java 8의 새로운 날짜 및 시간 API를 사용하여 시간과 관련된 작업을 수행할 때 유용하게 사용됩니다.
각각의 시각의 차이를 직접 구하는 Duration의 between을 이용할지 각각의 시각을 구한뒤 계산식을 이용해야 할지 고민이 필요할 것 같다. 다음에 어떤 기능을 또 구현하게 될 지 몰라서.