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();