java/java_ETC

[java_ETC]JobDateUtil

내가 만드는게 길이 된다 2023. 10. 25. 11:28
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);
	}
}