본문 바로가기

JAVA/JAVA

자바 날짜와 시간 관련 클래스 - 종류 및 예제

반응형

날짜와 시간을 가지고 있는 클래스

(date 보단 calendar 를 쓰라고 권장함)



<종류>

-Date


-Calendar

밑에 예제처럼 date처럼 new를 사용하면 에러가 난다. new를 이용해 직접 객체를 생성할 수 없다

메소드 중에 calendar를 생성해서 주는게 있음


-GregorianCalendar

윤년에 대한 파악을 할 수 있는 클래스

Calendar보다 쓰기 쉽도록 new를 이용해 만들 수 있다.

(Calendar에 윤년에 대한 개념 추가된것)


-System.currentTimeMillis

1970년 1월 1일 이후부터 현재 까지의 시간을 밀리세컨으로 반환

사용용도

1) 날짜 처리

2) 특정작업을 수행하는데 걸린 시간

3) 난수발생



<Date 와 Calendar 차이>

Date 클래스는 일요일 ==> 0 부터 시작

Calendar 클래스는 일요일 ==> 1 부터 시작



<순서>

1. Date 예제

: 사용자의 출생년도를 입력받아 암검진 대상자 판별하는 프로그램 작성


2. Calendar 예제


3. GregorianCalendar 예제

: 윤년 판별 프로그램


4. System.currentTimeMillis 예제

: 사용 용도에 따른 3가지





<Date 예제>

: 사용자의 출생년도를 입력받아 암검진 대상자 인지 판별하는 프로그램을 작성하시오.

<처리조건>

나이가 40세 이상이고 짝수연도에 태어난 사람이 무료 암검진 대상자 이다.


<코드>

import java.util.Date;

import java.util.Scanner;


class  CancerTest{

public static void main(String[] args) {

Date today = new Date();

Scanner sc = new Scanner(System.in);


System.out.print("태어난 연도를 입력하세요 ==>  ");

int input = sc.nextInt();


int year = today.getYear()+1900; 


if (input >= (year-40)){

System.out.println("아직 나이가 40세 미만 입니다.");

}


if (input <= (year-40)){

if ( 0 == input % 2 ){

System.out.println("암검진 대상자입니다.");

}else{

System.out.println("암검진 대상자가 아닙니다."); 

}   

}

}

}



<Calendar 예제>


<코드>

import java.util.Calendar;

class  CalendarTest{

public static void main(String[] args) {

Calendar today = new Calendar();

System.out.println(today);

}

}


<밑에 처럼 사용한다>


import java.util.Calendar;

class  CalendarTest{

public static void main(String[] args) {

Calendar today = Calendar.getInstance();

System.out.println(today);

}

}


<GregorianCalendar 예제>

: 사용자로 부터 연도를 입력받아 그 해가 윤년인지 판단하는 프로그램을 작성


<코드>

import java.util.Scanner;

import java.util.GregorianCalendar;


class  GregorianCalendarTest{

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);


System.out.print("궁금한 연도를 입력하세요  ===>");

int input = sc.nextInt();


GregorianCalendar year = new GregorianCalendar();


if (year.isLeapYear(input) ){

System.out.println("윤년입니다.");

}else{

System.out.println("윤년이 아닙니다");

}

}

}



<System.currentTimeMillis 예제>

사용용도

1. 날짜 처리

2. 특정 작업을 수행하는데 걸린시간

3. 난수발생


<기본 예제>


class DateTest03 {

public static void main(String[] args) {

long current = System.currentTimeMillis();

//1970년 1월 1일 이후부터 현재 까지의 시간을 밀리세컨으로 반환

System.out.println(current);

}

}



<날짜처리>


import java.util.Date;

class DateTest03 {

public static void main(String[] args) {

long current = System.currentTimeMillis();

//1970년 1월 1일 이후부터 현재 까지의 시간을 밀리세컨으로 반환

System.out.println(current);

Date today = new Date(current);

int year = today.getYear()+1900;

int month = today.getMonth()+1;

int date = today.getDate();


System.out.println(year + "년" + month + "월" + date + "일");

}

}



<특정 작업을 수행하는데 걸린 시간>


import java.util.Date;

class DateTest04 {


public static int getSum(int n){

int sum = 0;


for ( int i = 1 ; i <=n ; i++ ){

sum = sum + i;

}

//의도적으로 멈추게 할것임 걸린시간을 보기위해

//1000 은 1초를 얘기함 고로 밑에 3000은 3초

try{

Thread.sleep(3000);

}catch(Throwable e){

}

return sum;

}


public static void main(String[] args) {

long start = System.currentTimeMillis();

int r = getSum(1000000);

long end = System.currentTimeMillis();

System.out.println("결과 :  " + r);

System.out.println("걸린시간 :  " + (end-start) );

}

}



<난수발생>


class DateTest05 {

public static void main(String[] args) {

long r = System.currentTimeMillis();

//값 제한하기 0~9까지의 난수 발생

System.out.println(r % 10);

}

}


반응형