전체/Java

LocalDateTime, LocalDate, String to LocalDate, Compare, isBefore, isAfter

effortDev 2018. 6. 4. 17:58



1. String to LocalDateTime, String to LocalDate




1
2
3
4
5
6
7
8
9
10
11
12
13
14
// String to LocalDateTime
String issueDate = "20180604"
String tempDate = issueDate.substring(04)+"-"+issueDate.substring(46)+"-"+issueDate.substring(68)+" 00:00";
 
//  tempDate = "2018-06-04 00:00"
LocalDate tempDate2 = LocalDate.parse( issueDate , DateTimeFormatter.BASIC_ISO_DATE); // 2018-10-04
 
//  tempDate2 = "2018-06-04"
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime localDateIssueDate = LocalDateTime.parse(tempDate, formatter); // localDateIssueDate "2018-06-04T00:00"
 
// String to LocalDate
DateTimeFormatter dateformatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate a = LocalDate.parse("2018-06-04",dateformatter); // LocalDate 2018-06-04
cs



2. LocalDateTime to LocalDate, LocalDate to LocalDateTime



1
2
3
4
5
6
7
8
9
10
11
12
// LocalDateTime to LocalDate 
LocalDateTime localDateTime = LocalDateTime.parse("2018-06-04T00:00");
 
LocalDate localDate = localDateTime.toLocalDate(); // localDate : 2018-06-04     
 
// LocalDate to LocalDateTime
 
LocalDate date = LocalDate.parse("2018-06-04");        // 2018-06-04
 
LocalDateTime localDateTime1 = date.atStartOfDay();     // 2018-06-04T00:00
LocalDateTime localDateTime2 = date.atTime(13,15);      // 2018-06-04T13:15
LocalDateTime localDateTime3 = date.atTime(16,0540);    // 2018-06-04T16:05:40
cs



3. LocalDate, LocalDateTime Compare 비교하기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 1. LocalDate compareTo
LocalDate startDt = LocalDate.of(201864);
LocalDate endDt = LocalDate.of(201866);
LocalDate issueDt = LocalDate.of(201865);
 
System.out.println(startDt.compareTo(endDt));  // startDt(2018, 6, 4) > endDt(2018, 6, 6) -> return -1
System.out.println(startDt.compareTo(startDt));    // startDt(2018, 6, 4) = startDt(2018, 6, 4) -> return 0
System.out.println(endDt.compareTo(startDt));  // endDt(2018, 6, 6) > startDt(2018, 6, 4) -> return 1
 
// startDt(시작일자)와 endDt(종료일자) 사이에 issueDt(발행일자)가 들어가는지 비교하기 위해 조건문을 작성하면
 
if(issueDt.compareTo(cmpnStrtDttm) == -1 // 발행일이 시작일보다 작거나
        || issueDt.compareTo(cmpnEndDttm) == 1 ) { // 발행일이 종료일보다 크면
    throw new exception("발행일자가 시작일자와 종료일자 기간사이에 속해있지 않습니다.");
}
 
// 2. LocalDateTime isBefore, isAfter
 
// LocalDateTime형식의 strtDt : 2018-06-04T00:00 , endDt: 2018-06-05T00:00, isuueDt: 2018-06-04T00:00
LocalDateTime strtDt = LocalDateTime.parse("2018-06-04T00:00");
LocalDateTime endDt = LocalDateTime.parse("2018-06-05T00:00");
LocalDateTime isuueDt = LocalDateTime.parse("2018-06-04T00:00");
 
if( (isuueDt.isAfter(strtDt) // 발행일이 시작일보다 커야(이후여야)하고
    && isuueDt.isBefore(endDt) ) // 발행일이 종료일보다 작아야(이전이어야)하고
        || (isuueDt.isEqual(strtDt) // 발행일이 시작일과 같을경우
        || isuueDt.isEqual(endDt) )){ // 발행일이 종료일과 같을경우
        System.out.println("발행일이 시작일과 종료일 사이에 속해있음."); 
}else{
    throw new exception("발행일이 시작일과 종료일 사이에 속해있지 않습니다.");
}
 
if( (!isuueDt.isAfter(strtDt) // 발행일(06-04)이 시작일(06-05)보다 크지(이후이지) 않고
    && !isuueDt.isBefore(endDt) )) // 발행일(06-04)이 종료일(06-05)보다 작지(이전이지)않고
{
    throw new exception("발행일이 시작일과 종료일 사이에 속해있지 않습니다.");
}else{
        System.out.println("발행일이 시작일과 종료일 사이에 속해있음."); 
}
cs


LocalDate, LocalDateTime의 형식과 Compare 방법에 대해 알 수 있었다.