package com.twokimss.web.batch.service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import org.apache.ibatis.javassist.bytecode.stackmap.TypeData.ClassName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JobDateUtil {
private static Logger logger = LoggerFactory.getLogger(ClassName.class);
public static final DateTimeFormatter ymd = DateTimeFormatter.ofPattern("yyyyMMdd");
public static final DateTimeFormatter ymdHms = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
public static final DateTimeFormatter ymd2 = DateTimeFormatter.ofPattern("yyyy.MM.dd");
public static final DateTimeFormatter ymdHms2 = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss");
public static long getInitialDelay(int targetH, int targetM, int targetS) {
long initialDelay = 0;
LocalDate nowDate = LocalDate.now();
LocalDateTime nowDateTime = LocalDateTime.now();
int nowY = nowDate.getYear();
int nowM = nowDate.getMonthValue();
int nowD = nowDate.getDayOfMonth();
System.out.println("nowY==========>"+nowY);
System.out.println("nowM==========>"+nowM);
System.out.println("nowD==========>"+nowD);
LocalDateTime compareDateTime = LocalDateTime.of(nowY, nowM, nowD, targetH, targetM, targetS);
LocalDateTime targetDateTime = null;
if(nowDateTime.isBefore(compareDateTime)) {
System.out.println("현재시간은 목표시간보다 이전");
targetDateTime = compareDateTime;
}else {
System.out.println("현재시간은 목표시간보다 이후");
targetDateTime = compareDateTime.plusDays(1);
}
logger.debug("targetDateTime=========================>{}", targetDateTime);
initialDelay = ChronoUnit.MILLIS.between(nowDateTime, targetDateTime);
//initialDelay = ChronoUnit.SECONDS.between(nowDateTime, targetDateTime);
//initialDelay = ChronoUnit.MINUTES.between(nowDateTime, targetDateTime);
logger.debug("initialDelay===============>[{}]", initialDelay);
return initialDelay;
}
public static long getDelay(long aNum, String type) {
long delay = 0;
switch (type) {
case JobConst.DELAY_TYPE_DAY:
delay = aNum * 24 * 60 * 60 * 1000;
break;
case JobConst.DELAY_TYPE_HH:
delay = aNum * 60 * 60 * 1000;
break;
case JobConst.DELAY_TYPE_MI:
delay = aNum * 60 * 1000;
break;
default:
break;
}
return delay;
}
public static String getDateTime() {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
// Date nowDate = new Date();
// String strDate = sdf.format(nowDate);
return formatDateTime2(getNowTime());
}
public static String getToday() {
return formatDate(getNowDate());
}
/**
* date
* @param type
* @return
*/
public static LocalDate getNowDate() {
return LocalDate.now(ZoneId.of("Asia/Seoul"));
}
public static String formatDate(LocalDate date) {
return ymd.format(date);
}
public static String formatDate2(LocalDate date) {
return ymd2.format(date);
}
public static LocalDate parseDate(String strYmd) {
return LocalDate.parse(strYmd, ymd);
}
/**
* date time
* @param type
* @return
*/
public static LocalDateTime getNowTime() {
return LocalDateTime.now(ZoneId.of("Asia/Seoul"));
}
public static String formatDateTime(LocalDateTime datetime) {
return ymdHms.format(datetime);
}
public static String formatDateTime2(LocalDateTime datetime) {
return ymdHms2.format(datetime);
}
public static LocalDateTime parseDateTime(String strYmdHms) {
return LocalDateTime.parse(strYmdHms, ymdHms);
}
}
package com.twokimss.web.login.controller;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.ibatis.javassist.bytecode.stackmap.TypeData.ClassName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.twokimss.web.batch.service.JobDateUtil;
import com.twokimss.web.batch.service.ScheduleExec;
@Controller
public class MyAjaxController {
private Logger logger = LoggerFactory.getLogger(ClassName.class);
@RequestMapping(value="/simpleTest.do")
@ResponseBody
public void simpleTest() {
trace("[simpleTest]=====================start");
//http://localhost:9080/simpleTest.do
//date
LocalDate localDate = JobDateUtil.getNowDate();
logger.debug("localDate===========>{}", localDate);
String sLocalDate = JobDateUtil.formatDate(localDate);
logger.debug("sLocalDate===========>{}", sLocalDate);
String sLocalDate2 = JobDateUtil.formatDate2(localDate);
logger.debug("sLocalDate2===========>{}", sLocalDate2);
//plus
LocalDate nextDate = localDate.plusDays(1);
logger.debug("nextDate===========>{}", nextDate);
//현재시간
LocalDateTime ldtNow = JobDateUtil.getNowTime();
logger.debug("ldtNow===========>{}", ldtNow);
String sLdtNow = JobDateUtil.formatDateTime2(ldtNow);
logger.debug("sLdtNow===========>{}", sLdtNow);
LocalDateTime nextTime = ldtNow.plusHours(1);
logger.debug("nextTime===========>{}", nextTime);
//오늘 + 특정시간
//String sDateTime = sLocalDate + "063000";
String sToday = JobDateUtil.getToday();
logger.debug("sToday===========>{}", sToday);
String sDateTime = JobDateUtil.getToday() + "063000";
LocalDateTime ldt = JobDateUtil.parseDateTime(sDateTime);
logger.debug("ldt===========>{}", ldt);
String sLdt = JobDateUtil.formatDateTime(ldt);
logger.debug("sLdt===========>{}", sLdt);
String sLdt2 = JobDateUtil.formatDateTime2(ldt);
logger.debug("sLdt2===========>{}", sLdt2);
}
// 출력을 어떤 스레드에서 하고 있는지 확인
private static void trace(String strLog) {
System.out.println(Thread.currentThread().getName() + ">>>>" + strLog);
}
}