본문 바로가기
프로그래밍/Java-자주쓰는예제

【Java-데이터】날짜시간 포맷의 문자열 <-> Date·Timestamp로 변환

by 코이킹 2021. 10. 17.
반응형

1. 설명 

안녕하세요 코이킹입니다. 
이 포스트에서 다룰 예제는 "yyyy-MM-dd · yyyy-mm-dd HH:mm:ss와 같은 날짜 시간 포맷의 문자열 데이터를 Date객체 또는 long타입의 Timestamp로 변환하고", 
그 반대로 "Date객체 또는 Timestamp데이터를 날짜 시간 포맷의 문자열 데이터로 변환" 해주는 코드입니다.

 

2. 소스코드

- 메서드 

	// (1) 날짜시간 데이터를 지정한 포맷의 문자열로 리턴
	
	/**
	 * 현재 시간을 지정한 날짜시간 포맷의 문자열로 리턴하기
	 */
	public String getNowStr(String format) {
		if (format==null || format.equals("")) return null;
		Date date = new Date();
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		return formatter.format(date);
	}
	
	
	/**
	 * 지정한 시간을 지정한 날짜시간 포맷의 문자열로 리턴하기
	 */
	public String getDateStr(Date date, String format) {
		if ((date==null || date.equals("")) 
			|| (format==null || format.equals(""))) return null;
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		return formatter.format(date);
	}
	
	
	/**
	 * 지정한 타임스탬프를 지정한 날짜시간 포맷의 문자열로 리턴하기
	 */
	public String getDateStr(long timeStamp, String format) {
		if (format==null || format.equals("")) return null;
		Date date = new Date(timeStamp);
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		return formatter.format(date);
	}
	
	
	// (2) 날짜시간 포맷의 문자열을 날짜시간 데이터 타입으로 리턴
	
	/**
	 * 날짜시간 포맷의 문자열을 Date로 리턴
	 * @throws ParseException 
	 */
	public Date getDate(String dateStr, String format) throws ParseException {
		if ((dateStr==null || dateStr.equals("")) 
				|| (format==null || format.equals(""))) return null;
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		return formatter.parse(dateStr);
	}
	
	
	/**
	 * 날짜시간 포맷의 문자열을 타임스탬프로 리턴
	 */
	public Long getTimeStamp(String dateStr, String format) {
		if ((dateStr==null || dateStr.equals("")) 
				|| (format==null || format.equals(""))) return null;
		return Timestamp.valueOf(dateStr).getTime();
	}

- 메인 

public class Data_05_Date {
	public static void main(String[] args) {
		try {
			for (String str : args ) {
				System.out.println("Param : "+str);
			}
			
			String testStr1 = "20191203";
			String testStr2 = "2021-10-17 13:23:35";
			String testStr3 = "1631929893268";
			
			DateUtil du = DateUtil.getInstance();
			
			System.out.println("---------- (1) 현재시간을 지정한 날짜시간 포맷의 문자열로 변환 ---------- ");
			System.out.println(du.getNowStr(DateUtil.FORMAT_3));
			System.out.println(du.getNowStr(DateUtil.FORMAT_7));
			System.out.println();
			
			
			System.out.println("---------- (2) 날짜시간 데이터를 날짜시간 포맷의 문자열로 변환  ---------- ");
			System.out.println(testStr1 + " -> "+ du.getDateStr(du.getDate(testStr1, DateUtil.FORMAT_1), DateUtil.FORMAT_3));
			System.out.println(testStr2 + " -> "+ du.getDateStr(du.getDate(testStr2, DateUtil.FORMAT_1), DateUtil.FORMAT_7));
			System.out.println();
			
			
			System.out.println("---------- (3) 타임스탬프를 날짜시간 포맷의 문자열로 변환  ---------- ");
			System.out.println(testStr3 + " -> "+ du.getDateStr(Long.parseLong(testStr3), DateUtil.FORMAT_4));
			System.out.println(testStr3 + " -> "+ du.getDateStr(Long.parseLong(testStr3), DateUtil.FORMAT_8));
			System.out.println();
			
			
			System.out.println("---------- (4) 날짜시간 포맷의 문자열을 타임스탬프로 변환  ---------- ");
			System.out.println(testStr2 + " -> "+ du.getTimeStamp(testStr2, DateUtil.FORMAT_7));
			System.out.println(testStr1 + " -> "+ du.getTimeStamp(testStr1, DateUtil.FORMAT_1));  // testStr1는 날짜 데이터만 있으므로 에러발생
			System.out.println();
			
			
			System.exit(0);
			
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(1);
		}
	}
}

 

3. 실행결과【Windows(이클립스) / Linux】

 

4. 전체코드

https://github.com/leeyoungseung/template-java

 

반응형

댓글