JAVA 날짜 관련 코드

HanSamDul·2023년 6월 28일
0


Date는 보통 4개의 클래스를 import한다.

1. java.text.SimpleDateFormat : 날짜 형식 맞추기 위함

🔸현재 날짜,시간 구하기

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {
	public static void main(String[] args) throws ParseException {
		Date now = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

		System.out.println("오늘 날짜 현재 시간(기본형식): "+now);
		System.out.println("지정한 형식: "+format.format(now));

	}
}

2. java.text.parseException : string에서 date 형식으로 바꿔 줄 때 parse를 쓰는데 exception 적용필요

🔸String에서 Date형식으로 변환 / Date에서 String 형식으로 변환

: String=> Date
Date date = format.parse(sdate);
: Date => String
String sdate = format.format(date);

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {
	public static void main(String[] args) throws ParseException {

		String sdate = "20210629";
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		
		//string => date 
		Date date = format.parse(sdate);
		
		//date => string
		sdate = format.format(date);
		
		System.out.println("date형식:"+date);
		System.out.println("string형식:"+sdate);	
	}
}

3. java.util.Calendar : 날짜 더하고 빼고 위함(원하는달 달력 출력)

🔸현재 날짜 년,월,시간 더하기 및 빼기 (Calendar객체 사용)

import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

public class test {
	public static void main(String[] args) throws ParseException {
		Date now = new Date();

		Calendar cal = Calendar.getInstance(); 
		cal.setTime(now);	// 현재날로 설정
		
		cal.add(Calendar.YEAR, 1); //1년 더하기 
		cal.add(Calendar.MONTH, -3); //3개월 빼기
		cal.add(Calendar.DATE, 2); //2일 더하기
		cal.add(Calendar.HOUR_OF_DAY, -2); //2시간빼기
		cal.add(Calendar.MINUTE, 20); //20분 더하기
		cal.add(Calendar.SECOND, -10); //10초 빼기
	}
}

4. java.util.Date : 날짜 구하기 위함

🔸현재 날짜 년,월,시간 구하기 (Calendar객체 사용)

import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

public class test {
	public static void main(String[] args) throws ParseException {
		Date now = new Date();
		
		Calendar cal = Calendar.getInstance(); 
		cal.setTime(now);
		
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH) + 1; //0부터 시작하기 때문에 1더해준다
		int day = cal.get(Calendar.DAY_OF_MONTH);
		int hour = cal.get(Calendar.HOUR_OF_DAY);
		int min = cal.get(Calendar.MINUTE);
		int sec = cal.get(Calendar.SECOND);
		System.out.println(year + "년도 " + month + "월 " + day + "일 " + hour + "시 " + min + "분 " + sec + "초");
	}
}

🔸날짜 비교방법 (compareTo사용)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {
	public static void main(String[] args) throws ParseException {
		Date date1 = new Date();
		Date date2 = new Date();
		
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		
		date1 = format.parse("20210629");
		date2 = format.parse("20110328");
		
		if(date1.compareTo(date2) > 0) {
			System.out.println("date1이 더 미래 날짜입니다.");
		}else if(date1.compareTo(date2) < 0) {
			System.out.println("date1이 더 과거 날짜입니다.");
		}else {
			System.out.println("같은 날짜입니다.");
		}
	}
}

ex)

@Override
public JSONObject getPjtTaskPrdctStndrInfo(JSONObject param) throws Exception {
		JSONObject result = new JSONObject();
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date formatDate = new Date();
		
		List<JSONObject> ProdctStndrSdate = projectMapper.selectPrdctStndrDate(param);
		for(JSONObject item : ProdctStndrSdate) {
			int SCHDUL_GEN_GAP = 0;
			int SCHDUL_GEN_NEED = 0;
			
			if(param.optString("SCHDUL_GEN_PM").equals("P")) {			// (D+)
				SCHDUL_GEN_GAP = param.optInt("SCHDUL_GEN_GAP");		// 시작 일
				SCHDUL_GEN_NEED = param.optInt("SCHDUL_GEN_NEED");		// 종료 일
			}else if(param.optString("SCHDUL_GEN_PM").equals("M")){		// (D-)
				SCHDUL_GEN_GAP = param.optInt("SCHDUL_GEN_GAP")*-1;		// 시작 일
				SCHDUL_GEN_NEED = param.optInt("SCHDUL_GEN_NEED")*-1;	// 종료 일
			}else {
				System.out.println("-");
			}
			
			// String 타입을 Date 타입으로 변환
			formatDate = dtFormat.parse(item.optString("SDATE"));
			cal.setTime(formatDate);	// 프로젝트 고객일정
			cal.add(Calendar.DATE, SCHDUL_GEN_GAP); // 계획시작일 계산
			Date SDATE = cal.getTime();				// 계획시작일
			cal.add(Calendar.DATE, SCHDUL_GEN_NEED);// 계획죵료일 계산
			Date EDATE = cal.getTime();				// 계획종료일
			String strSDFormat = sdf.format(SDATE);
			String strEDFormat = sdf.format(EDATE);
			result.put("TASK_SN", param.optString("TASK_SN"));
			result.put("PLAN_STRT_DATE", strSDFormat);		// 계획시작일
			result.put("PLAN_END_DATE", strEDFormat);		// 계획종료일
		}
		return result; 
	}

0개의 댓글