diff --git a/src/main/java/cokr/xit/ens/core/utils/DateUtil.java b/src/main/java/cokr/xit/ens/core/utils/DateUtil.java index 3cbe72d..37ad0ef 100644 --- a/src/main/java/cokr/xit/ens/core/utils/DateUtil.java +++ b/src/main/java/cokr/xit/ens/core/utils/DateUtil.java @@ -459,4 +459,152 @@ public class DateUtil { public static LocalDateTime localDateTime() { return LocalDateTime.now(); } + + /** + *
+     * 지난 날짜 확인 : 2020-06-22T23:20:32 ISO 시간 표기법에 따라 'T'를 꼭 붙여야 함.
+     * sourceDate > compareDate = true
+     * sourceDate < compareDate = false
+     * sourceDate == compareDate = false
+     *
+     * @param sourceDate  시작 년-월-일
+     * @param compareDate 비교 년-월-일
+     * @return boolean
+     * 
+ */ + public static boolean isAfterLocalDateTimeT(final String sourceDate, final String compareDate) { + boolean result = false; + + try { + LocalDateTime source = parseLocalDateTime(sourceDate); + result = source.isAfter(parseLocalDateTime(compareDate)); + } catch (Exception e) { + log.error("DateUtils::isAfterLocalDate", e); + } + + return result; + } + + /** + *
+     * 날자 add : 2020-06-22T23:20:32
+     * 빼기는 음수를 붙여서 넘기면 된다.
+     * ex : -1 = 빼기 1
+     *
+     * @param targetDate 계산할 년-월-일
+     * @param day        계산할 일
+     * @return String
+     * 
+ */ + public static String getAddDayT(final String targetDate, final int day) { + return getCalculatorDateAndTime(targetDate, 0, 0, day, 0, 0, 0); + } + + /** + * LocalDate.parse 객체 반환 + * + * @param target yyyy-MM-dd + * @return LocalDate.parse(tartget); + */ + public static LocalDate parseLocalDate(final String target) { + return LocalDate.parse(target); + } + + /** + * LocalDateTime.parse 객체 반환 + * + * @param target yyyy-MM-dd HH:mm:ss + * @return LocalDateTime.parse(tartget); + */ + public static LocalDateTime parseLocalDateTime(final String target) { + return LocalDateTime.parse(target); + } + + /** + *
+     * 현재시간을 microsecond 까지 포함한 형태로 반환
+     * yyyyMMddHHmmssSSSSSSS
+     * 
+     * @return String yyyyMMddHHmmssSSSSSSS 포맷으로
+     */
+    public static String getNowTimeMicrosecond() {
+        ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
+        // 6자리 나노초까지 포함된 포맷 지정
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSSS");
+        return now.format(formatter);
+    }
+
+    /**
+     * 
+     * 년 월 일 계산
+     * 날짜만 계산 년-월-일 형태로 넘겨줘야함(안그럼 예외)
+     * 해당월에 존재하지 않는 일을 넘겨도 예외
+     * 빼기는 음수를 붙여서 넘기면 된다.
+     * ex : -1 = 빼기 1
+     *
+     * @param targetDate 계산할 년-월-일
+     * @param year       계산할 년
+     * @param month      계산할 월
+     * @param day        계산할 일
+     * @return String
+     * 
+ */ + public static String getCalculatorDate(final String targetDate, final int year, final int month, final int day) { + String result = ""; + + try { + LocalDate localDate = parseLocalDate(targetDate); + localDate = localDate.plusYears(year); + localDate = localDate.plusMonths(month); + localDate = localDate.plusDays(day); + result = localDate.toString(); + } catch (Exception e) { + log.error("DateUtils::getCalculatorDate", e); + } + + return result; + } + + /** + *
+     * 날짜&시간 계산 년-월-일THH:mm:ss 형태(안그럼 예외)
+     * 2020-06-22T23:20:32 ISO 시간 표기법에 따라 'T'를 꼭 붙여야 함.
+     * 빼기는 음수를 붙여서 ex : -1 = 빼기 1
+     *
+     * @param targetDate 계산할 년-월-일T시:분:초
+     * @param year       계산할 년
+     * @param month      계산할 월
+     * @param day        계산할 일
+     * @param hour       계산할 시간
+     * @param minute     계산할 분
+     * @param second     계산할 초
+     * @return String
+     * 
+ */ + public static String getCalculatorDateAndTime(final String targetDate, final int year, final int month, final int day, int hour, int minute, int second) { + String result = ""; + + try { + LocalDateTime localDateTime = parseLocalDateTime(targetDate); + localDateTime = localDateTime.plusYears(year); + localDateTime = localDateTime.plusMonths(month); + localDateTime = localDateTime.plusDays(day); + localDateTime = localDateTime.plusHours(hour); + localDateTime = localDateTime.plusMinutes(minute); + localDateTime = localDateTime.plusSeconds(second); + result = localDateTime.toString(); + } catch (Exception e) { + log.error("DateUtils::getCalculatorDateAndTime", e); + } + + return result; + } + + public static void main(String[] args) { + System.out.println(getAddDayT("2024-10-30T23:59:59", 1)); + System.out.println(isAfterLocalDateTimeT("2024-10-30T23:59:59", "2024-10-30T23:59:58")); + System.out.println(isAfterLocalDateTimeT("2024-10-31T23:59:59", "2024-10-30T23:59:58")); + System.out.println(getNowTimeMicrosecond()); + System.out.println(getAddDayT(getTimeTOfTime("20241030235959"), 1)); + } } diff --git a/src/main/java/cokr/xit/ens/modules/kkotalk/service/support/KkoTalkAcceptor.java b/src/main/java/cokr/xit/ens/modules/kkotalk/service/support/KkoTalkAcceptor.java index 67d6879..319dd59 100644 --- a/src/main/java/cokr/xit/ens/modules/kkotalk/service/support/KkoTalkAcceptor.java +++ b/src/main/java/cokr/xit/ens/modules/kkotalk/service/support/KkoTalkAcceptor.java @@ -108,8 +108,8 @@ public class KkoTalkAcceptor implements EnsPhaseProcSupport, Kk if (!CmmnUtil.isEmpty(document.getReviewExpiresAt())) { String expDate = DateUtil.getTimeOfTimeT(document.getReviewExpiresAt(), "yyyyMMddHHmmss"); int sec = DateUtil.secByFromBetweenTo(DateUtil.toLocalDateTime(expDate), DateUtil.toLocalDateTime(reqDTO.getClose_dt())); - if (sec < 0) - result.add(String.format("마감일시보다 \"재열람 만료일시\"가 느립니다. [ document[%d].acpt_data.kko_talk.readExpiresAt ]", i.get())); + if (sec > 0) + result.add(String.format("마감일시보다 \"재열람 만료일시\"가 빠릅니다. [ document[%d].acpt_data.kko_talk.readExpiresAt ]", i.get())); } } i.getAndIncrement();