Java 날짜 처리에 대한 이해

박현우·2024년 1월 9일

// 캘린더 클래스를 파라미터로 전달받아, 그 객체가 포함하고 있는
// 시각을 출력하는 메서드
public static void printDateTime(Calendar cal) {
		int yy = cal.get(Calendar.YEAR);
		int mm = cal.get(Calendar.MONTH)+1;
		int dd = cal.get(Calendar.DAY_OF_MONTH);
		int hh = cal.get(Calendar.HOUR_OF_DAY);
		int mi = cal.get(Calendar.MINUTE);
		int ss = cal.get(Calendar.SECOND);
		System.out.printf("%04d년 %02d월 %02d일 %02d시 %02d분 %02d초\n", 
							yy, mm, dd, hh , mi, ss );


	public static void main(String[] args) {
	// 캘린더 객체 생성 -> 싱글톤 객체
	Calendar cal = Calendar.getInstance();
	
	// 년, 월, 일, 시, 분, 초 => 24시간제
	int yy = cal.get(Calendar.YEAR);
	// 자바에서의 월은 0부터 시작된다.
	int mm = cal.get(Calendar.MONTH)+1;
	int dd = cal.get(Calendar.DAY_OF_MONTH);
	int hh = cal.get(Calendar.HOUR_OF_DAY);
	int mi = cal.get(Calendar.MINUTE);
	int ss = cal.get(Calendar.SECOND);
	System.out.printf("%04d년 %02d월 %02d일 %02d시 %02d분 %02d초\n", 
						yy, mm, dd, hh , mi, ss );
	
	
	System.out.println("------------------------");
	// 년, 월, 일, 시, 분, 초 => 12시간제
	yy = cal.get(Calendar.YEAR);
	mm = cal.get(Calendar.MONTH)+1;
	dd = cal.get(Calendar.DAY_OF_MONTH);
	hh = cal.get(Calendar.HOUR);
	mi = cal.get(Calendar.MINUTE);
	ss = cal.get(Calendar.SECOND);
	
	// 오전(=0), 오후(=1)
	int ampm = cal.get(Calendar.AM_PM);
	String[] apname = {"오전", "오후"};
	
	System.out.printf("%04d년 %02d월 %02d일 %s %02d시 %02d분 %02d초\n", 
			yy, mm, dd, apname[ampm], hh , mi, ss );
	
	System.out.println("------------------------");
	// 현재 날짜+시각을 yyyymmddmiss 형식으로 출력
	yy = cal.get(Calendar.YEAR);
	mm = cal.get(Calendar.MONTH)+1;
	dd = cal.get(Calendar.DAY_OF_MONTH);
	hh = cal.get(Calendar.HOUR_OF_DAY);
	mi = cal.get(Calendar.MINUTE);
	ss = cal.get(Calendar.SECOND);
	
	System.out.printf("%04d%02d%02d%02d%02d%02d\n", 
			yy, mm, dd, hh , mi, ss );
	
    
    public static void main(String[] args) {
	Calendar cal = Calendar.getInstance();
	DatePrinter.printDateTime(cal);
	
	// 지금으로부터 100일 후
	cal.add(Calendar.DAY_OF_MONTH, 100);
	DatePrinter.printDateTime(cal);
	
	// 75년 전
	cal.add(Calendar.YEAR, -75);
	DatePrinter.printDateTime(cal);
	
	// 9시간 후
	cal.add(Calendar.HOUR, 9);
	DatePrinter.printDateTime(cal);
	
	// 8달 후 
	cal.add(Calendar.MONTH, 8);
	DatePrinter.printDateTime(cal);
    
    public static void main(String[] args) {
	Calendar cal = Calendar.getInstance();
	DatePrinter.printDateTime(cal);
	
	// 특정 날짜로 지정
	cal.set(Calendar.YEAR, 2023);
	// 자바에서는 0부터 월을 관리하므로 12월로 설정한 것
	cal.set(Calendar.MONTH, 11);
	cal.set(Calendar.DAY_OF_MONTH, 18);
	// 시, 분, 초 설정
	cal.set(Calendar.HOUR_OF_DAY, 9);
	cal.set(Calendar.MINUTE, 10);
	cal.set(Calendar.SECOND, 33);
	DatePrinter.printDateTime(cal);
	
	// 특정 날짜로 지정하는 다른 방법
	cal.set(1982, 5, 17);
	DatePrinter.printDateTime(cal);
	
	// 시분초 포함해서 특정 날짜 지정 -> 24시간제만 가능
	cal.set(1988, 2, 14, 1, 2, 3);
	DatePrinter.printDateTime(cal);
	
	// 년, 월, 시, 분, 초는 가만히 두고, 날짜만 1일로 변경하는 경우
	cal.set(Calendar.DAY_OF_MONTH, 1);
	DatePrinter.printDateTime(cal);
    
    public static void main(String[] args) {
	Calendar cal = Calendar.getInstance();
	
	// 요일에 해당하는 인덱스(일=1~토=7)
	int day = cal.get(Calendar.DAY_OF_WEEK);
	System.out.println("요일 인덱스 = " + day);
	
	// 요일을 출력하기
	String[] day_name = {"일", "월", "화", "수", "목", "금", "토"};
	System.out.println("요일 : " + day_name[day-1]);
	
	// 이번 달은 몇 주로 되어있는가?
	int week_count = cal.getActualMaximum(Calendar.WEEK_OF_MONTH);
	System.out.println("이번 달은 " + week_count + "주로 되어있다");
	
	// 이번 달은 몇일까지 있는가?
	int day_count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
	System.out.println("이번 달은 " + day_count + "일까지 있다");
	
	// 이번 달은 무슨 요일부터 시작하는가?
	cal.set(Calendar.DAY_OF_MONTH, 1);
	int first_day = cal.get(Calendar.DAY_OF_WEEK);
	System.out.println("이번 달의 시작 요일 인덱스 : " + first_day);
	System.out.println("이번 달의 시작 요일 : " + day_name[first_day-1]);
    

0개의 댓글