Java

[Java] 기본 API 클래스② currentTimeMilis, Calendar, Date

망고고래 2024. 4. 3. 15:49

1. System.currentTimeMilis()

what?

System 클래스의 currentTimeMilis() 메서드

현재 운영체제의 시간을 long 타입으로 반환

1970년 1월 1일을 기준으로 현재까지의 시간. 밀리초(1/1000) 단위로 환산해서 보여줌

how?

//시작 시각 측정
long start System.currentTimeMilis();
System.out.println("시작 시각: " + start);

//실행부
int a = 0;
for(int i = 0; i<10000000; i++){
    a++;
}

//종료 시각 측정
long end = System.currentTimeMilis();
System.out.println("종료 시각: " + end);

//걸린 시간 측정
System.out.println("걸린 작업 시간: " + (end-start));

 

이때 start와 end, end-start는 밀리초 단위로 출력된다.

 

2. java.util.Calendar

what?

날짜를 다루는 클래스

how?

싱글턴 패턴 사용, getInstance() 메서드로 GregorianCalendar 인스턴스를 생성해야 함(추상 클래스이기 때문에 직접 생성 x)

//싱글턴 패턴: getInstance()
Calendar calendarA = Calendar.getInstance();
System.out.println(calendarA.toString());

//GregorianCalendar 인스턴스 직접 생성
Calendar calendarB = new GregorianCalendar();
System.out.println(calendarB.toString());

//toString: 인스턴스의 필드 모두 출력
//두 방법 모두 생성되는 인스턴스 같음

 

1)get()으로 필드 가져오기

YEAR, MONTH, DATE, DAY_OF_WEEK, DAY_OF_YEAR, DATE, ...

※MONTH는 0부터 시작(0: 1월, 2: 1월, ... 11: 12월)

※요일도 INT로 반환, 0부터 시작(1: 일요일, 2: 월요일, 7: 토요일)

Calendar calendarA = Calendar.getInstance();

int year = calendarA.get(Calendar.YEAR);
int month = calendarA.get(Calendar.MONTH);
int date = calendarA.get(Calendar.DATE);
System.out.println(year + "년 " + month + "월 " + date + "일");

//요일
System.out.println(calendarA.get(Calendar.DAY_OF_WEEK));

//이번 년도에서 오늘이 몇 번째 날인지 출력
System.out.println(calendarA.get(Calendar.DAY_OF_YEAR));

//이번달이 며칠까지 있는지 출력
System.out.println(calendarA.getActualMaximum(Calendar.DATE));

 

2)set()으로 지정하기

set(변경 대상 항목, 바꿀 값)
set(년, 월, 일);

 

//D-day 구하기

//인스턴스 생성
Calendar today = Calendar.getInstance();
Calendar endOfYear = Calendar.getInstance();
Calendar Christmas = Calendar.getInstance();

//12월 31일 설정
//날짜 지정: 월일 따로 설정
endOfYear.set(Calendar.MONTH, 11);
endOfYear.set(Calendar.DATE, 31);
//D-day
long idff = endOfYear.getTimeInMIlis() - today.getTimeInMilis();
System.out.println("연말까지 남은 날: " + diff/(24*60*60*1000) + "일");

//크리스마스 설정: 한번에 설정
Christmas.set(2024, 11, 25);
//D-day
diff = Christmas.getTimeInMilis() - today.getTimeInMilis();
System.out.println("크리스마스까지 남은 날: " + diff/(24*60*60*1000) + "일");

 

 

3. java.util.Date

what?

JDK 1.0부터 제공된 클래스.

대부분의 메서드와 생성자가 사용되지 않게 됨

how?

Date today = new Date();
System.out.println(today);
//Wed Apr 03 15:44:53 KST 2024 출력

//long 타입(밀리초)을 파라미터로 받아서 인스턴스 생성
long miliSec = System.currentTimeMilis();
Date today2 = new Date(miliSec);
System.out.println(today2);
////Wed Apr 03 15:44:53 KST 2024 출력

 

long 타입, Calendar 타입, Date 타입은 상호 변환 가능

//Calendar -> Date
//Date 타입 변수에 Calendar 클래스의 Time 대입
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(date);

//Date -> Calendar
//Calendar 클래스의 Time에 Date 타입 변수 대입
calendar.setTime(date);

//Calendar -> long
//Calendar 클래스의 TimeInMilis 변수 long타입으로 가져옴
long time = calendar.getTimeInMilis();
System.out.println(time);

//long -> Calendar
//long 타입 변수 Calendar 클래스의 timeInMilis 변수로 설정
calendar.setTimeInMilis(time);

'Java' 카테고리의 다른 글

[Java] 기본 API 클래스⑤ BigDecimal 클래스  (0) 2024.04.03
[Java] 기본 API 클래스③ Random  (0) 2024.04.03
[Java] 기본 API 클래스① 문자열 클래스  (0) 2024.04.02
[Java] 익명 클래스  (0) 2024.04.02
[Java] 내부 클래스  (0) 2024.03.31