날짜 구하기
// LocalDate를 이용한 현재 날짜 구하기
LocalDate now = LocalDate.now();
// LocalDate에 날짜를 직접 입력
LocalDate targetDate = LocalDate.of(2021,06,09);
시간 구하기
// 현재 시간 구하기
LocalTime currentTime = LocalTime.now();
// LocalTime에 시간을 직접 입력, 4번째 매개변수는 nanoSecond
// 결과: 12:32:33.0000022
LocalTime tagetTime = LocalTime.of(12,33,35,22)
날짜 + 시간 구하기
// 현재 날짜와 시간 정보 구하기
LocalDateTime now = LocalDateTime.now();
// 현재 날짜, 시간 구하기, second(3), nanoSecond(4)는 선택
// 결과: 2019-11-12T12:32:22.000003333
LocalDateTime targetDateTime = LocalDateTime.of(2019,11,12,12,32,22,3333);
날짜 더하기
ex) 현재 날짜에서 2일 더하기
LocalDateTime now = LocalDateTime.now();
now.plusDays(2);
날짜 비교
LocalDateTime start = LocalDateTime.now(); // 현재 날짜 및 시간
LocalDateTime end = LocalDateTime.now().plusDays(2); // 현재 날짜보다 2일 뒤
start.isBefore(end); // 결과: false
start.isEqual(end); // 결과: false
start.isAfter(end); // 결과: true
날짜 차이 계산
LocalDate start = LocalDate.of(2019,11,12); // 2019-11-12
LocalDate end = LocalDate.of(2019,12,13); // 2019-12-13
Period period = Period.between(start, end);
period.getYears(); // 0년
period.getMonths(); // 1개월
period.getDays(); // 1일 차이
전체 시간을 기준으로 차이 계산하기
LocalDate start = LocalDate.of(2019,11,12);
LocalDate end = LocalDate.of(2019,12,13);
ChronoUnit.DAYS.between(start, end); // 결과: 31 (1개월 1일)
날짜 포맷
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일 a h시 m분");
DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
// 결과: 2021년 6월 9일 오전 9시 41분
String nowString = now.format(dateTimeFormatter);
// 결과: 2021-6-9일 09:41:22
String nowString2 = now.format(dateTimeFormatter2);
날짜 변환
1. LocalDateTime -> String
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime -> java.sql.Timestamp
Timestamp.valueOf(LocalDateTime.now());
LocalDateTime -> java.util.Date
Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
String -> LocalDateTime
LocalDateTime.parse("2021-06-09 09:40:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
해당 월에 마지막 날짜 찾기
String targetDate = "2021-06-09";
YearMonth target = YearMonth.from(LocalDate.parse(targeetDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
// 해당 월의 일 수(int)
target.lengthOfMonth(); // 30
// 해당 월의 마지막 날(LocalDate)
target.atEndOfMonth(); // 2021-06-30