|
|
|
@ -459,4 +459,152 @@ public class DateUtil {
|
|
|
|
|
public static LocalDateTime localDateTime() {
|
|
|
|
|
return LocalDateTime.now();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* 지난 날짜 확인 : 2020-06-22T23:20:32 ISO 시간 표기법에 따라 'T'를 꼭 붙여야 함.
|
|
|
|
|
* sourceDate > compareDate = true
|
|
|
|
|
* sourceDate < compareDate = false
|
|
|
|
|
* sourceDate == compareDate = false
|
|
|
|
|
*
|
|
|
|
|
* @param sourceDate 시작 년-월-일
|
|
|
|
|
* @param compareDate 비교 년-월-일
|
|
|
|
|
* @return boolean
|
|
|
|
|
* </pre>
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* 날자 add : 2020-06-22T23:20:32
|
|
|
|
|
* 빼기는 음수를 붙여서 넘기면 된다.
|
|
|
|
|
* ex : -1 = 빼기 1
|
|
|
|
|
*
|
|
|
|
|
* @param targetDate 계산할 년-월-일
|
|
|
|
|
* @param day 계산할 일
|
|
|
|
|
* @return String
|
|
|
|
|
* </pre>
|
|
|
|
|
*/
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* 현재시간을 microsecond 까지 포함한 형태로 반환
|
|
|
|
|
* yyyyMMddHHmmssSSSSSSS
|
|
|
|
|
* <pre>
|
|
|
|
|
* @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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* 년 월 일 계산
|
|
|
|
|
* 날짜만 계산 년-월-일 형태로 넘겨줘야함(안그럼 예외)
|
|
|
|
|
* 해당월에 존재하지 않는 일을 넘겨도 예외
|
|
|
|
|
* 빼기는 음수를 붙여서 넘기면 된다.
|
|
|
|
|
* ex : -1 = 빼기 1
|
|
|
|
|
*
|
|
|
|
|
* @param targetDate 계산할 년-월-일
|
|
|
|
|
* @param year 계산할 년
|
|
|
|
|
* @param month 계산할 월
|
|
|
|
|
* @param day 계산할 일
|
|
|
|
|
* @return String
|
|
|
|
|
* </pre>
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* 날짜&시간 계산 년-월-일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
|
|
|
|
|
* </pre>
|
|
|
|
|
*/
|
|
|
|
|
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));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|