출처 : Overview (The Java™ Tutorials > Date Time > Standard Calendar)
클래스 | 출력 |
Instant | 2013-08-20T15:16:26.355Z |
LocalDate | 2013-08-20 |
LocalDateTime | 2013-08-20T08:16:26.937 |
ZonedDateTime | 2013-08-21T00:16:26.941+09:00[Asia/Tokyo] |
LocalTime | 08:16:26.943 |
MonthDay | --08-20 |
Year | 2013 |
YearMonth | 2013-08 |
Month | AUGUST |
OffsetDateTime | 2013-08-20T08:16:26.954-07:00 |
OffsetTime | 08:16:26.957-07:00 |
Duration | PT20H (20 hours) |
Period | P10D (10 days) |
Instant
Instant는 UTC 기준의 정확한 순간을 표현하는 클래스로 해당 클래스 자체에는 시간대 정보가 없어서
LocalDateTime 또는 ZonedDateTime으로 변환해야 사람이 읽기 쉬움
- 현재시간
import java.time.Instant;
Instant timestamp = Instant.now();
- 현재시간에 +1시간
Instant oneHourLater = Instant.now().plus(1, ChronoUnit.HOURS);
- 1970년 1월 1일 00:00:00 UTC 이후로 몇 초가 흘렀는지
Instant.ofEpochSecond(0L) -> 1970년 1월 1일 00:00:00 UTC
.until(Instant.now(), ChronoUnit.SECONDS) → 두 시간 차이를 초 단위로 계산
long secondsFromEpoch = Instant.ofEpochSecond(0L).until(Instant.now(),
ChronoUnit.SECONDS);
- 출력
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println(now);
}
}
- 실행 결과
2025-03-27T12:34:56.789Z
Date
날짜 정보만을 다루는 네 가지 클래스 제공(LocalDate, YearMonth, MonthDay, Year)
- LocalDate 기본 사용법
import java.time.LocalDate;
import java.time.Month;
public class LocalDateExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, Month.MARCH, 27);
// 2025년 3월 27일
System.out.println("날짜: " + date);
}
}
날짜: 2025-03-27
- 특정 날짜 찾기
import java.time.LocalDate;
import java.time.Month;
public class LocalDateExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, Month.MARCH, 27);
// 2025년 3월 27일
TemporalAdjuster adj = TemporalAdjusters.next(DayOfWeek.WEDNESDAY);
// 현재 날짜 이후 가장 가까운 수요일을 찾아줌
LocalDate nextWed = date.with(adj);
System.out.printf("현재 날짜: %s, 다음 수요일: %s%n", date, nextWed);
}
}
현재 날짜: 2025-03-27, 다음 수요일: 2025-04-02
- 특정 날짜 요일 확인(현재 시스템의 지역 시간대를 기준으로 계산됨)
import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;
public class DayOfWeekExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, Month.MARCH, 27);
// 2025년 3월 27일
DayOfWeek dayOfWeek = date.getDayOfWeek();
System.out.println("2025년 3월 27일은 " + dayOfWeek);
}
}
2025년 3월 27일은 THURTHDAY
- LocalDate 간 차이 계산(Period)
import java.time.LocalDate;
import java.time.Period;
public class DayOfWeekExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate targetDate = LocalDate.of(2030, 1, 1);
Period period = Period.between(today, targetDate);
System.out.printf("2030년 1월 1일까지 %d년 %d개월 %d일 남음%n",
period.getYears(), period.getMonths(), period.getDays());
}
}
2030년 1월 1일까지 4년 9개월 5일 남음
Date and Time
날짜와 시간을 다루는 클래스
- LocalTime 시간만 다루는 클래스
LocalTime nowSec = LocalTime.now();
//현재 시간 가져오기
nowSec.getHour();
//nowSec의 시간만 가져옴 int
nowSec.getMinute();
//nowSec의 분만 가져옴 int
nowSec.getSecond();
//nowSec의 초만 가져옴 int
- 특정 시간 만들어 출력하기
LocalTime timeOne = LocalTime.of(9,0);
LocalTime timeTwo = LocalTime.of(22,30);
System.out.println("시간 1 : " + timeOne);
System.out.println("시간 2 : " + timeTwo);
시간 1 : 09:00
시간 2 : 21:30
- LocalDateTime 날짜와 시간을 함께 다루는 클래스
LocalDateTime.now();
//현재 날짜와 시간 가져옴
LocalDateTime.of(2025, Month.MARCH, 27, 16, 00);
//2025년 3월 27일 16:00 으로 설정
LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault())
//Instant(UTC기준)를 시스템의 로컬 시간대로 변환
Period and Duration
- Duration 시간의 길이를 나타냄, 초 또는 나노초
Instant t1 = Instant.now();
Thread.sleep(2000);
Instant t2 = Instant.now();
long ns = Duration.between(t1, t2).toNanos();
System.out.println("시간 차이(나노초): " + ns);
시간 차이(나노초): 2000123456
- ChronoUnit - LocalDate 사이의 날짜 차이 구하기
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class ChronoUnitDaysExample {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2025, 3, 1);
LocalDate date2 = LocalDate.of(2025, 3, 27);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println("두 날짜 사이의 일 수: " + daysBetween + "일");
}
}
두 날짜 사이의 일 수: 26일
ChronoUnit.NANOS : 나노초 단위
ChronoUnit.MICROS : 마이크로초 단위
ChronoUnit.MILLIS : 밀리초 단위
ChronoUnit.SECONDS : 초 단위
ChronoUnit.MINUTES : 분 단위
ChronoUnit.HOURS : 시간 단위
ChronoUnit.DAYS : 일(day) 단위
ChronoUnit.WEEKS : 주(week) 단위
ChronoUnit.MONTHS : 월(month) 단위
ChronoUnit.YEARS : 년(year) 단위
ChronoUnit.DECADES : 10년 단위
ChronoUnit.CENTURIES : 100년 단위
- Period
Period.between(startDate, endDate) : 두 날짜 간의 Period 객체 생성
getYears() : 차이 나는 "년" 반환
getMonths() : 차이 나는 "월" 반환
getDays() : 차이 나는 "일" 반환
plusYears(n), plusMonths(n), plusDays(n) : 해당 단위만큼 추가
minusYears(n), minusMonths(n), minusDays(n) : 해당 단위만큼 감소
'Java' 카테고리의 다른 글
[Java] 형 변환 (Conversion) (0) | 2024.10.22 |
---|