다연이네

[days20] 날짜와 시간 본문

Java

[days20] 날짜와 시간

 다연  2020. 10. 18. 18:47
반응형

1. Date와 Calendar 기본

package review;

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

public class Review01 {

	public static void main(String[] args) {

		Date now = new Date();
		
		System.out.println(now);
		//Sun Oct 18 18:13:14 KST 2020
		System.out.println(now.toLocaleString());
		//2020. 10. 18 오후 6:13:14
		System.out.println(now.toGMTString());
		//18 Oct 2020 09:13:14 GMT
		
		//특정 날짜 요일 가져오기
		Date theDay = new Date(2020-1900, 10-1, 1);
		System.out.println(theDay.getDay()); //1(일)~7(토)
		
		
		Calendar c = Calendar.getInstance();
		System.out.println(c.get(Calendar.YEAR));
		System.out.println(c.get(Calendar.MONTH)+1);
		System.out.println(c.get(Calendar.DATE));
		
		System.out.println(c.get(Calendar.WEEK_OF_MONTH)); //달에서 몇번째 주인지
		System.out.println(c.get(Calendar.DAY_OF_MONTH));	 //달에서 몇번째 일인지
		System.out.println(c.get(Calendar.DAY_OF_YEAR));		 //연도의 몇번째 일인지
		System.out.println(c.get(Calendar.DAY_OF_WEEK));		 //요일 (1~7)
		System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));	//달에서 몇번째 요일인지
		System.out.println(c.get(Calendar.AM_PM));	//0오전 1오후
		
		System.out.println(c.get(Calendar.HOUR)); 
		System.out.println(c.get(Calendar.HOUR_OF_DAY));  //24시기준
		System.out.println(c.get(Calendar.MINUTE));  
		System.out.println(c.get(Calendar.SECOND));  
		System.out.println(c.get(Calendar.MILLISECOND));  //1/1000초
		
		System.out.println(c.get(Calendar.ZONE_OFFSET));
		
		//마지막 날짜 구해오기
		System.out.println(c.getActualMaximum(Calendar.DATE)); //31

		
		
	}

}

[문제] 2019년 2월 13일 무슨 요일인지와 마지막 날짜 출력하기

Calendar c = Calendar.getInstance();
		c.set(2019, 2-1, 13);
		System.out.println(c.get(Calendar.DAY_OF_WEEK));
		System.out.println(c.getActualMaximum(Calendar.DATE));

[문제] 2009년 각 월별 마지막 날짜 출력

	int year = 2009;
		c.set(Calendar.YEAR, year); 
		for (int i = 0; i < 12; i++) {
			c.set(Calendar.MONTH, i);
			System.out.printf("%d월: %d일\n",
					i+1, c.getActualMaximum(Calendar.DATE));
		}

[문제] 달력 출력

package review;

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

public class Review01 {

	public static void main(String[] args) {

		if(args.length !=2) { 
			System.out.println("Usage : java CalendarEx7 2015 11");
			return;
		}//==메인함수에 매개변수 2개 아닐시 종료 


		int year = Integer.parseInt(args[0]);
		int month = Integer.parseInt(args[1]);
		
		System.out.printf("%d년 %d월\n", year, month);
		
		Calendar sDay = Calendar.getInstance();
		Calendar eDay = Calendar.getInstance();

		sDay.set(year, month-1, 1);
		eDay.set(year, month-1, sDay.getActualMaximum(Calendar.DATE)); 
		System.out.println(sDay.getTime().toLocaleString()); //2020. 10. 1 오후 2:29:19
		//밑 2줄을 왜 쓰나요? > 전달, 다음달 원래날짜는 1일이지만 그 전달의 날짜 (ex. 29, 30 등)이 시작일이 되고
		//									마지막 날짜가 31이 아니라 1,2,3 등 다음 달까지 출력하도록
		sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK)+1); //데이오브위크: 요일 1~7 , n만큼의 요일 추가한 것  
		eDay.add(Calendar.DATE, 7- eDay.get(Calendar.DAY_OF_WEEK)); 


		System.out.println(sDay.getTime().toLocaleString());//11/28

		System.out.println("SU\tMO\tTU\tWE\tTH\tFR\tSA");
	
		for (int i = 0; i < 6*7; i++) {
			 Calendar today = Calendar.getInstance();
			 int date = sDay.get(Calendar.DATE);
			 if(today.getTime().toLocaleString().substring(0,12).equals(sDay.getTime().toLocaleString().substring(0,12)))
	        	  System.out.printf("[%d]\t",date); //오늘이면 []표시
	          else
	        	  System.out.printf("%d\t", date); 
	          sDay.add(Calendar.DATE, 1);
	          if( i%7 == 6) System.out.println();
		}



	}

}
반응형
Comments