#2. Calendar의 get(), set() 메서드에 사용되는 상수
YEAR : 년도
DAY_OF_MONTH : 한달의 날짜
MONTH : 달(0~11)  0-> 1월
DAY_OF_WEEK : 한주의 요일
HOUR : 시간 (0~11) 0-> 1시
AM_PM : 오전/오후
HOUR_OF_DAY : 24시간 기준으로 한 시간
MINUTE : 분
SECOND : 초
MILLISECEND : 밀리초 (1초 =1000밀리초)

#3.Gragorian Calendar 클래스
1970.1.1.0.0.0을 기준으로 365.25일 (4년에 1번씩 윤달)


2) Date 클래스 (비추천, 하지만 아직까지많이 쓴다)
: 단일 클래스로 날짜/시간 관련 클래스
1900.1.1.0.0.0을 기준,
1970.1.1.0.0.0을 기준

 

package day15;

import java.util.Calendar;
public class ClassEx47 {

		static String toCalString(Calendar date) {
			return date.get(Calendar.YEAR) + "년" +
		(date.get(Calendar.MONTH)+1) + "월"+ (date.get(Calendar.DATE))
 +"일";	 	}
	
	public static void main(String[] args) {
		
			Calendar now = Calendar.getInstance();
			System.out.println(now);
		
		//년도와 월 알아내기
		int year = now.get(Calendar.YEAR);	
		int month = now.get(Calendar.MONTH)	+1 ; //0~11월 : 0 -> 1월
		System.out.println("year : " +year );
		System.out.println("month : " +month );
		System.out.println();
		
		// 일 = 1, 월 =2 
		final String[] DAY_OF_WEEK = {"","일","월","화","수","목","금","토","일"};		
		System.out.println(toCalString(now));
		System.out.println(DAY_OF_WEEK[now.get(Calendar.DAY_OF_WEEK)]+"요일");
		
		Calendar date1 = Calendar.getInstance();
		date1.set(2022,12,25);  //올해 크리스마스로 세팅
		System.out.println(toCalString(date1)+""+ DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)]);

	}

}

 

 

package day15;
import java.util.Calendar;
public class ClassEx48 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Calendar time1 = Calendar.getInstance();
		Calendar time2 = Calendar.getInstance();
		
		
		
		// time1 : 10시 20 분 30초
		time1.set(Calendar.HOUR_OF_DAY, 10);
		time1.set(Calendar.MINUTE, 20);
		time1.set(Calendar.SECOND, 30);
		
		//time2  :  20시 30분 10초
		time1.set(Calendar.HOUR_OF_DAY, 20);
		time1.set(Calendar.MINUTE, 30);
		time1.set(Calendar.SECOND, 10);
		
		
		System.out.println(time1.getTimeInMillis());
		System.out.println(time2.getTimeInMillis());
		long differ = Math.abs(time1.getTimeInMillis() - time2.getTimeInMillis()/1000);	
		System.out.println(differ);
		
		final int [] TIME_UNIT= {3600,60,1};
		final String[] TIME_UNIT_NAME = {"시간","분","초"};
		System.out.print("tim1 1 과 2 차이는 ");
		String tmp = "";
		for(int i=0;i<TIME_UNIT.length; i++) {
			tmp += differ/TIME_UNIT[i] + TIME_UNIT_NAME[i];
		}
		System.out.println(tmp + "입니다");
			
	}
}

 

package day15;

import java.util.Calendar;

public class ClassEx49 {
	static String toCalString(Calendar date) {
		return date.get(Calendar.YEAR) + "년" +
	(date.get(Calendar.MONTH)+1) + "월"+ (date.get(Calendar.DATE))
+"일";	 	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		Calendar date = Calendar.getInstance();
		date.set(2022, 7,31);  //2022 8월 31
				System.out.println(toCalString(date));
				System.out.println("1일 후");
				date.add(Calendar.DATE, 1);
				System.out.println(toCalString(date));
				
				System.out.println("6달전");
				date.add(Calendar.MONTH,-6);
				System.out.println(toCalString(date));
				
				System.out.println(" 31 일 후 roll");
				date.roll(Calendar.DATE, 31);
				System.out.println(toCalString(date));
				date.add(Calendar.DATE,31);
				System.out.println(toCalString(date));
	}
}
package day15;

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

public class ClassEx50 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Date day = new Date();  // 오늘 현재 시각  값을 지정해서 객체 생성
		System.out.println(day);
		System.out.println(day.getMonth()+1);
		
		
		// 날짜 포맷(형태)를 원하는 형태로 변경해서 사용을 원할때
		SimpleDateFormat abc1 = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat abc2 = new SimpleDateFormat("yy년-MM월-dd일");
		System.out.println(abc1.format(day));
		System.out.println(abc2.format(day));
		
	}
}

 

 

 

package day15;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class ClassEx51 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		
			// 날짜 입력받아 현재 시간과의 차이 출력
			String pattern = "yyyy/MM/dd";
			DateFormat ab= new SimpleDateFormat(pattern);
			
			Scanner sc = new Scanner(System.in);
			
			Date inputDate = null;
			System.out.println("날짜를 " + pattern + "의 형태로 입력하세요");
			// inputDate = ab.parse(sc.nextLine());
			while(sc.hasNextLine()) {
				try {
					inputDate = ab.parse(sc.nextLine());
					break;
				}catch(Exception e) {
					System.out.println("날짜를 " + pattern + "형태로 다시 입력");
				}
			}
			//System.out.println(inputDate);
			Calendar cal = Calendar.getInstance();
			cal.setTime(inputDate); // Date -> Calendar
			Calendar now = Calendar.getInstance(); // 현재시각
			
			long hours = Math.abs(cal.getTimeInMillis() - now.getTimeInMillis())/(1000*60*60);
			System.out.println(hours);
	}
}

'P-Language > [Java]' 카테고리의 다른 글

[Java] 17 - 입출력 스트림(Input/Out Stream)  (0) 2022.06.11
[Java] Hashmap Exercises  (0) 2022.06.07
[Java] 16 - 컬렉션 (해쉬맵, 어레이리스트)  (0) 2022.06.03
[Java] 15 - 패키지와 API  (0) 2022.06.03
[Java] 14 - 싱글턴  (0) 2022.06.03

+ Recent posts