반응형

 

Date 클래스

 

: 날짜와 시간 정보를 저장하는 클래스.

날짜를 표현할 때 사용하며 객체 간 날짜 정보를 주고 받을 때 매개 변수나 리턴 타입으로 주로 사용된다.

 

 

1. getTime() : 1970년 1월 1일 자정 이후의 시간을 밀리 초로 표시

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod1();
	}
	
	public void dateMethod1() {
		Date d = new Date();
		/*
		 * 
		 */
		// getTime() : 1970년 1월 1일 자정 이후의 시간을 밀리 초로 표시
		// 밀리세컨드 = 천분의 1초
		long time = d.getTime()/1000;
		
		int min = 60;
		int hour = min*60;
		int day = hour*24;
		int year = day*365; 
		
		int years = (int) (time/year);
		time = time%year;
		int days = (int) (time/day);
		time = time%day;
		int hours = (int) (time/hour);
		time = time%hour;
		int mins = (int) (time/min);
		time = time%min;

		System.out.println(time);
		System.out.println(years + "년, " + days + "일, " + hours + "시간, " + mins + "분");
	}
}

 

결과 화면1

 

 

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod2();
	}
    
	public void dateMethod2() {
		Date d1 = new Date();
		System.out.println(d1);
		
		try {
			// 1초 멈춤
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		Date d2 = new Date();
		
		long time = d2.getTime() - d1.getTime();
		System.out.println(time); // 1014 -> 1초 
	}
}

 

결과 화면2 : Date의 경우 만들어지는 시점의 시간을 저장한다.

 

 

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod3();
	}
	
	public void dateMethod3() {
		String str_date = "2023-12-28";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		/*
		 * parse -> String을 date 객체로 변환.
		 */
		try {
			Date d = sdf.parse(str_date);
			// 10일 뒤의 날짜를 체크
			Date d2 = new Date(d.getTime() + 86400*10*1000); // 86400초 = 1일 & 밀리세컨트를 사용하기에 * 1000을 해줌.
			System.out.println(d);
			System.out.println(d2);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

 

결과 화면3

 

 

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod4();
	}
	
	public void dateMethod4() {
		/*
		 * 스캐너를 통해 날짜를 입력 받고
		 * 해당 날짜에서 30일 뒤를 출력해보기.
		 */
		
		System.out.println("날짜를 입력하세요. (yyyy.mm.dd)");
		String user_date = sc.next();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); // 소문자 mm의 경우 분을 이야기 함.
		
		try {
			Date d1 = sdf.parse(user_date);
			Date d2 = new Date(d1.getTime() + (long)86400*1000*30); // 30일 뒤
			System.out.println(d2);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

 

결과 화면4

 

 

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod5();
	}
	
	public void dateMethod5() {
		/*
		 * Date - > 문자열로 변환.
		 * 
		 * SimpleDateFormat
		 * yyyy -> 년도
		 * MM	-> 월
		 * dd	-> 일
		 * HH	-> 24시 기준
		 * hh	-> 12시 기준
		 * mm	-> 분
		 * ss	-> 초
		 */
		Date d = new Date(); // 호출된 시간.
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd hh:mm ss");
		String str_date = sdf.format(d);
		System.out.println(str_date);
	}
}

 

결과 화면5

 

  .parse .format
차이점 문자열을 날짜 시간 객체로 변환 날짜 시간 객체를 문자열로 변환

 

 

package kr.or.ddit.study11;

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

public class DateExample {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		DateExample de = new DateExample();
		de.dateMethod6();
	}
	
	public void dateMethod6() {
		/*
		 * 오늘로 부터 3일 뒤에 시간을 구하고
		 * 년도부터 초까지 출력 해보기.
		 */
		
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd hh:mm ss");
		String str_date = sdf.format(d);
		System.out.println(str_date);
		
		Date d2 = new Date(d.getTime() + 86400*3*1000);
		String str_date_3 = sdf.format(d2);
		System.out.println(str_date_3);
	}
}

 

결과 화면6

 

 

 

Calendar 클래스

 

: 운영체제의 날짜와 시간을 얻을 때 사용하는 클래스.

달력을 표현하는 클래스로 추상 클래스이기에 new 연산자를 사용하는 방법은 쓸 수 없다.

 

+ 추상 메소드란 오버라이딩을 해야만 사용할 수 있는 클래스를 이야기 한다.

 

 

getInstance() 메소드를 이용하여 현재 운영체제에 설정된 시간대 기준으로 한 Calendar 하위 객체를 얻을 수 있다.

.YEAR : 원하는 년도로 변경, 증가, 감소

.MONTH : 원하는 월로 변경, 증가, 감소

.DATE : 원하는 일로 변경, 증가, 감소

 

set을 사용할 시에는 변경되며, add를 사용할 시 증가&감소 할 수 있다.

 

package kr.or.ddit.study11;

import java.util.Calendar;
import java.util.Date;

public class CalExample {
	public static void main(String[] args) {
		CalExample cal = new CalExample();
		cal.method1();
	}
	
	public void method1() {
		// 싱글톤 이용
		// Calendar
		// 1. set
		// 2. getTime();
		// 3. add
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, 2022); // 원하는 년도로 변경됨
		cal.set(Calendar.DATE, 1); // 원하는 일로 변경됨
//		cal.add(Calendar.DATE, 7); // 7일 증가
		cal.add(Calendar.DATE, -7); // 7일 감소
		cal.add(Calendar.MONTH, 4);
		
		Date d = cal.getTime();
		System.out.println(d);
	}
}

 

결과 화면7

 

 

반응형