Calendar 클래스

: 날짜를 읽어오는 클래스입니다. Calendar는 추상 클래스 이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 합니다.

 

Calendar today = new Calendar(); error!! 추상클래스는 인스턴스를 생성할 수 없습니다. 

Calendar today = Calendar.getInstance();

.getInstance() 메서드는 Calendar 클래스를 구현한 클래스의 인스턴스를 반환해줍니다.

 

추가적으로 설명을하면, 인스턴스를 직접 생성해서 사용하지 않고 이처럼 메서드를 통해서 인스턴스를 반환하게 하는 이유는 최소한의 변경으로 프로그램이 작동할 수 있도록 하기 위한 것입니다.

 

 

● 현재 날짜, 시간, 년, 월, 일, 시, 분, 초 구하기

	         // 현재 날짜 / 시간 
		Calendar today = Calendar.getInstance();
		
		// 년, 월, 일 구하기 
		int year = today.get(Calendar.YEAR); // 해당연도 return (get 의 반황형은 int)
		int month = today.get(Calendar.MONTH)+1; // 월의 정보는 1월일 때는 0의 값으로 반환한다. 
		                                         // 사용함에 있어서 +1을 해줘야한다.
                                                  
		int day = today.get(Calendar.DAY_OF_MONTH);
		System.out.printf("%d년 %d월 %d일 \n" , year, month, day);
		
		
		// 시, 분, 초 구하기 
		int hour = today.get(Calendar.HOUR_OF_DAY); // HOUR_OF_DAY(0~23시) vs  HOUR(0~12시)
		int minute = today.get(Calendar.MINUTE);
		int second = today.get(Calendar.SECOND);
		
		System.out.printf("%d:%d:%d \n",hour,minute,second);

 

현재 날짜 및 시간 : Calendar.getInstance();

 

년, 월, 일 구하기 : today.get(Calendar.DAY_OF_MONTH);

 

시, 분, 초 구하기 : 시 - Calendar.HOUR_OF_DAY , 분 - Calendar.MINUTE , 초 - Calendar.SECOND

 

 

● 요일구하기 

String[] DAY_OF_WEEK = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};  
// 숫자로 반환 할때 일 - 0, 월 - 1 

System.out.println("오늘은 " + DAY_OF_WEEK[today.get(Calendar.DAY_OF_WEEK)-1]+ " 입니다."); 

인덱스는 0부터 시작하기 때문에 -1을 해줘야지 정확한 요일이 출력됩니다. 대괄호 안에는 인덱스, 메서드, 연산식 등 최종의 값이 0이상 인덱스의 결과값이 온다면 어떠한 문법구문도 사용 가능합니다.

 

 

 

Date 클래스

Date now = new Date();
System.out.println("현재시간 " +now.toString()); 
//.toString()을 override 하여 결과값을 나타낸다: Thu May 14 10:20:38 KST 2020

 

●Date와 Calendar 간의 변환

 

Calendar가 새로 추가되면 Date 는 대부분의 메서드가 'deprecated' 되었으므로 잘 사용되지 않습니다, 그럼에도 불구하고 여전히 Date를 필요로 하는 메서들이 존재하기 때문에 Date와 Calendar 또는 그 반대로 변화할 일이 생기게 됩니다.

 

// Calendar -> Date 변환.
Date d1 = new Date(today.getTimeInMillis());  
// 입력으로 아무것도 넣지 않으면 컴퓨터 운영체제로 가서 시간을 읽어온다. 
	    
// today.getTimeInMillis() =/ Date(long date) 
내가 처리한 임의의 시간으로 부터 출력 되게 할 수 있다. 
	    
	    
// Date -> Calendar 변환. 
Date d2 = new Date();
Calendar cal =  Calendar.getInstance() ;
	
cal.setTime(d2); 
		

 

● SimpleDateFormat

: date와 calendat만으로 날짜 데이터를 원하는 형태로 다양하게 출력하는 것은 불편하고 복잡하여 그것은 간단하게 해결할 수 있게 해줍니다.

 

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH:mm:ss a"); 
 // 년 , 월 , 일 , 시, 분, 초, 오전/오후

출력값 : 2020년 5월 17일 

 

 

 

Random 클래스 

: random 으로 결과의 값을 출력하게 해줍니다.

 

추가적인 설명을 하자면 컴퓨터 안에서 규칙성 없이 출력값을 가져온다는 것이 불가능 하기 때문에 컴퓨터의 현재 시간을 Millissecond 단위로 정수화 해서 계산 한것을 return 하기 때문에 (1/1000  초) 불규칙적으로 출력되는 것으로 보이는 것입니다.

 

예시)

package exam09;

import java.util.Random;

public class RandomNumberGenerator02 {
	public static void main(String[] args) {
		Random random = new Random();
		
		
		//1~100사이의 임의의 값
		random.nextInt(100); // 0~99까지의 정수가 출력. 
		int num = random.nextInt(100)+1;
		System.out.println(num);

 

정수 뿐 아니라 소수 및 boolean 값도 출력 가능합니다.

float f = random.nextFloat(); // default 일때 0.0~1.0 사이의 임의의 실수 값 : 
System.out.println("default 일때 0.0~1.0 사이의 임의의 실수 값 : " + f);
		
boolean b = random.nextBoolean();
System.out.println("임의의 논리 값 : " + b);

 

'빅데이터 > JAVA' 카테고리의 다른 글

[JAVA] 컬렉션 프레임워크 ( Collection Framework )  (0) 2020.05.18
[JAVA] Generics  (0) 2020.05.17
[JAVA] Wrapper 클래스  (0) 2020.05.17
[JAVA] Object 클래스  (0) 2020.05.17
[JAVA] 예외처리  (0) 2020.05.15

+ Recent posts