프로그래밍/- 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