프로그래밍/- java
LocalDate, LocalTime, LocalDateTime
즐겁게 하하하
2022. 2. 16. 20:41
728x90
LocalDate
// 로컬 컴퓨터의 현재 날짜 정보를 저장한 LocalDate 객체를 리턴
LocalDate currentDate = LocalDate.now();
// result : 2022-12-11
// 파라미터로 주어진 날짜 정보를 저장한 LocalDate 객체를 리턴한다.
LocalDate targetDate = LocalDate.of(2022,01,24);
//결과 : 2022-12-11
LocalTime
// 로컬 컴퓨터의 현재 시간 정보를 저장한 LocalDate 객체를 리턴.
LocalTime currentTime = LocalTime.now();
// 결과 : 11:11:11
// 파라미터로 주어진 시간 정보를 저장한 LocalTime 객체를 리턴.
LocalTime targetTime = LocalTime.of(12,33,35,22);
// 결과 : 11:11:11.0000111
LocalDateTime
// 로컬 컴퓨터의 현재 날짜와 시간 정보
LocalDateTime currentDateTime = LocalDateTime.now();
// 결과 : 2022-01-12T16:34:30.388
LocalDateTime targetDateTime = LocalDateTime.of(2022, 01, 12, 12, 32,22,3333);
// 여기도 second,nanoSecond 매개변수는 필수가 아닌 선택입니다.
// 결과 : 2022-01-12T12:32:22.000003333
날짜 더하기
LocalDateTime currentDateTime = LocalDateTime.now();
currentDateTime.plusDays(3)
리턴 타입 | 메소드(매개변수) | 설명 |
java.time.LocalDateTime | plusYears() | 년 |
java.time.LocalDateTime | plusMonths() | 월 |
java.time.LocalDateTime | plusWeeks() | 주 |
java.time.LocalDateTime | plusDays() | 일 |
java.time.LocalDateTime | plusHours() | 시 |
java.time.LocalDateTime | plusMinutes() | 분 |
java.time.LocalDateTime | plusSeconds() | 초 |
java.time.LocalDateTime | plusNanos() | 밀리초 |
날짜 더하기 빼기 Calendar 이용
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("current: " + df.format(cal.getTime()));
cal.add(Calendar.MONTH, 2);
cal.add(Calendar.DATE, -3);
System.out.println("after: " + df.format(cal.getTime()));
날짜 비교
LocalDateTime startDateTime = LocalDateTime.now();
// 결과 : 2022-01-12T12:32:22.000003332
LocalDateTime endDateTime = LocalDateTime.of(2022, 02, 23,11, 32,22,3333);
// 결과 : 2022-01-12T12:32:22.000003333
// startDateTime이 endDateTime 보다 이전 날짜 인지 비교
startDateTime.isBefore(endDateTime);
// 결과 : true
// 동일 날짜인지 비교
startDateTime.isEqual(endDateTime);
// 결과 : false
// startDateTime이 endDateTime 보다 이후 날짜인지 비교
startDateTime.isAfter(endDateTime);
// 결과 : false
시간 비교
LocalTime startTime = LocalTime.now();
LocalTime endTime = LocalTime.of(23, 59, 59);
// 결과 : 21:12:10
// startTime이 endTime 보다 이전 시간 인지 비교
startTime.isBefore(endTime);
// 결과 : true
// startTime이 endTime 보다 이후 시간 인지 비교
startTime.isAfter(endTime);
// 결과 : false
날짜 차이 계산
LocalDate startDate = LocalDate.now();
// 결과 : 2022-01-12
LocalDate endDate = LocalDate.of(2022,02,19);
// 결과 : 2022-01-13
Period period = Period.between(startDate, endDate);
period.getYears(); // 1년
period.getMonths(); // 2개월
period.getDays(); // 3일 차이
전체 시간을 기준으로 차이 계산하기
LocalDate startDate = LocalDate.now();
// 결과 : 2022-01-12
LocalDate endDate = LocalDate.of(2022,02,23);
// 결과 : 2022-02-13
ChronoUnit.DAYS.between(startDate, endDate);
// 결과 : 31 (1개월 1일)
클래스 | 설명 |
ChronoUnit.YEARS | 전체 년 차이 |
ChronoUnit.MONTHS | 전체 월 차이 |
ChronoUnit.WEEKS | 전체 주 차이 |
ChronoUnit.DAYS | 전체 일 차이 |
ChronoUnit.HOURS | 전체 시간 차이 |
ChronoUnit.SECONDS | 전체 초 차이 |
ChronoUnit.MILLIS | 전체 밀리초 차이 |
ChronoUnit.NANOS | 전체 나노초 차이 |
시간 차이 계산
LocalTime startTime = LocalTime.now();
// 결과 : 17:14:55
LocalTime endTime = LocalTime.of(18,17,35);
// 결과 : 18:17:35
Duration duration = Duration.between(startTime, endTime);
duration.getSeconds();
// 결과 : 3742
duration.getNano();
// 결과 : 922000000
날짜 포맷
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일 a h시 m분");
String nowString = now.format(dateTimeFormatter);
// 결과 : 2022년 02월 12일 오후 3시 12분
LocalDateTime now2 = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
// 결과 : 2022-02-12 03:12:32
날짜 변환
LocalDate -> String
LocalDate.of(2022, 02, 11).format(DateTimeFormatter.BASIC_ISO_DATE);
LocalDateTime -> String
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDate -> java.sql.Date
Date.valueOf(LocalDate.of(2022, 02, 17));
LocalDateTime -> java.util.Date
Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime -> java.sql.Timestamp
Timestamp.valueOf(LocalDateTime.now());
String -> LocalDate
LocalDate.parse("1995-05-09");
LocalDate.parse("20191224", DateTimeFormatter.BASIC_ISO_DATE);
String -> LocalDateTime
LocalDateTime.parse("2022-02-25T10:15:30");
LocalDateTime.parse("2022-02-25 12:30:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
java.util.Date -> LocalDateTime
LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
LocalDateTime -> LocalDate
LocalDate.from(LocalDateTime.now());
LocalDate -> LocalDateTime
LocalDate.now().atTime(2, 30);
해당 월에 마지막 날짜 찾기
String targetDate = "2022-02-12";
YearMonth targetYearMonth = YearMonth.from(LocalDate.parse(targetDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
//해당 월의 일 수(int)
System.out.println(targetYearMonth.lengthOfMonth());
//해당 월의 마지막 날(LocalDate)
System.out.println(targetYearMonth.atEndOfMonth());
해당 주차의 날짜 찾기
final long calendarWeek = 24;
LocalDate desiredDate = LocalDate.now()
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, calendarWeek)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
TMI((Too Much Information)
String date = "2022-02-11 11:20:12"
LocalDateTime localdatetime = LocalDateTime.parse(date);
// 결과 : java.time.format.DateTimeParseException
String date = "2022-02-11T 11:20:12";
LocalDateTime localdatetime = LocalDateTime.parse(date);
// 결과 : parse 성공
728x90