시간이 얼마나 결렸지? : Instant 클래스
• 시각(時刻) 시간의 어느 한 시점
ex) 지금 시각은 오후 2시 30분입니다.
• 시간(時間) 어떤 시각에서 어떤 시각까지의 사이
ex) 당신에게 주어진 시간은 이제 30분밖에 남지 않았습니다
public static void main(String[] args) {
Instant start = Instant.now(); // 현재 시각 정보를 담음
System.out.println("시작: " + start.getEpochSecond());
반환 값은 ‘1970-01-01 00:00:00'을 기준으로 지나온 시간을 초 단위로 계산한 결과
System.out.println("Time flies like an arrow.");
Instant end = Instant.now(); // 현재 시각 정보를 담음
System.out.println("끝: " + end.getEpochSecond());
Duration between = Duration.between(start, end); // 두 시각의 차 계산
Duration은 시각 차를 표현하기 위한 클래스
System.out.println("밀리 초 단위 차: " + between.toMillis());
}
오늘이 며칠이죠? : LocalDate 클래스
LocalDate는 시각 정보가 생략된 ‘날짜 정보’를 표현하기 위한 클래스
public static void main(String[] args) {
// 오늘
LocalDate today = LocalDate.now();
System.out.println("Today: " + today);
// 올 해의 크리스마스
LocalDate xmas = LocalDate.of(today.getYear(), 12, 25);
System.out.println("Xmas: " + xmas);
// 올 해의 크리스마스 이브
LocalDate eve = xmas.minusDays(1);
System.out.println("Xmas Eve: " + eve);
}
LocalDate 인스턴스는 Immutable 인스턴스
public LocalDate minusYears(long yearsToSubtract) // LocalDate의 메소드
public LocalDate minusMonths(long monthsToSubtract) // LocalDate의 메소드
public LocalDate minusDays(long daysToSubtract) // LocalDate의 메소드
날짜의 차를 표현하기 위한 Period 클래스
public static void main(String[] args) {
// 오늘
LocalDate today = LocalDate.now();
System.out.println("Today: " + today);
// 올 해의 크리스마스
LocalDate xmas = LocalDate.of(today.getYear(), 12, 25);
System.out.println("Xmas: " + xmas);
// 크리스마스까지 앞으로 며칠?
Period left = Period.between(today, xmas);
System.out.println("Xmas까지 앞으로 " +
left.getMonths() + "월 " + left.getDays() + "일");
}
public int getYears() // Period의 메소드
public int getMonths() // Period의 메소드
public int getDays() // Period의 메소드
2시간 10분 뒤에 어때? : LocalTime 클래스
LocalDate는 날짜 정보를 나타내는 클래스, 반면 LocalTime은 시각 정보를 나타내는 클래스
public static void main(String[] args) {
// 현재 시각
LocalTime now = LocalTime.now();
System.out.println("지금 시각: " + now);
// 2시간 10분 뒤 화상 미팅 예정
LocalTime mt = now.plusHours(2);
mt = mt.plusMinutes(10);
// 화상 미팅 시각
System.out.println("화상 미팅 시각: " + mt);
}
public LocalTime plusHours(long hoursToAdd) // LocalTime의 메소드
public LocalTime plusMinutes(long minutesToAdd) // LocalTime의 메소드
public LocalTime plusSeconds(long secondstoAdd) // LocalTime의 메소드
LocalTime 클래스와 Duration 클래스
public static void main(String[] args) {
// PC방의 PC 이용 시작 시각
LocalTime start = LocalTime.of(14, 24, 35);
System.out.println("PC 이용 시작 시각: " + start);
// PC방의 PC 이용 종료 시각
LocalTime end = LocalTime.of(17, 31, 19);
System.out.println("PC 이용 종료 시각: " + end);
시각 차 계산에는 이 경우에도 Duration 클래스가 사용된다.
// PC 이용 시간 계산
Duration between = Duration.between(start, end);
System.out.println("총 PC 이용 시간: " + between);
}
지금으로부터 22시간 35분 뒤의 시각과 날짜는? : LocalDateTime 클래스
LocalDate는 날짜 정보를, LocalTime은 시각 정보를, LocalDateTime은 시각 정보와 날짜 정보를 동시에 나타낸다.
public static void main(String[] args) {
// 현재 날짜와 시각
LocalDateTime dt = LocalDateTime.now();
System.out.println(dt);
// 영국 바이어와 22시간 35분 뒤 화상 미팅 예정
LocalDateTime mt = dt.plusHours(22);
mt = mt.plusMinutes(35);
// 영국 바이어와 화상 미팅 날짜와 시각
System.out.println(mt);
}
public LocalDateTime plusYears(long years)
public LocalDateTime plusMonths(long months)
public LocalDateTime plusDays(long days)
public LocalDateTime plusHours(long hours)
public LocalDateTime plusMinutes(long minutes)
public LocalDateTime plusSeconds(long seconds)
두 LocalDateTime 인스턴스 간의 시각과 날짜의 차
public static void main(String[] args) {
LocalDateTime today = LocalDateTime.of(2020, 4, 25, 11, 20); // 현재 시각
LocalDateTime flight1 = LocalDateTime.of(2020, 5, 14, 11, 15); // 항공편1의 출발 시간
LocalDateTime flight2 = LocalDateTime.of(2020, 5, 13, 15, 30); // 항공편2의 출발 시간
// 빠른 항공편을 선택하는 과정
LocalDateTime myFlight;
if(flight1.isBefore(flight2))
myFlight = flight1;
else
myFlight = flight2;
// 빠른 항공편의 비행 탑승까지 남은 날짜 계산
Period day = Period.between(today.toLocalDate(), myFlight.toLocalDate());
// 빠른 항공편의 비행 탑승까지 남은 시간 계산
Duration time = Duration.between(today.toLocalTime(), myFlight.toLocalTime());
// 비행 탑승까지 남은 날짜와 시간 출력
System.out.println(day);
System.out.println(time);
}
public LocalDate toLocalDate()
→ 날짜에 대한 정보를 LocalDate 인스턴스에 담아서 반환
public LocalTime toLocalTime()
→ 시각에 대한 정보를 LocalTime 인스턴스에 담아서 반환
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 32-1. I/O 스트림에 대한 이해 (0) | 2019.10.28 |
---|---|
[윤성우 열혈자바] 31-2. 시간대를 적용한 코드 작성 그리고 출력 포맷의 지정 (0) | 2019.10.28 |
[윤성우 열혈자바] 30-3. 스트림의 최종 연산 (0) | 2019.10.28 |
[윤성우 열혈자바] 30-2. 스트림의 중간 연산 (0) | 2019.10.28 |
[윤성우 열혈자바] 30-1. 스트림의 생성과 연결 (0) | 2019.10.28 |