상세 컨텐츠

본문 제목

[JAVA] Date, Calendar, long - 시간처리

JAVA Language

by mobile 2012. 7. 28. 13:32

본문

반응형

long 이라는 기본 자료형이 Java에서는 시간 값을 연산하는데 있어서 실행되는 단위.

- long : 1,000분의 1초 단위로 계산된 결과를 알려 줍니다.

- java.util.Calendar : 국가별, 시간대별 시간을 정확히 알 수 있도록 제공하는 기능과 날자 계산에 관한 많은 메소드를 가지고 있습니다.

- java.util.Date : 거의 모든 메소드가 Deprecated. java.util.Calendar와 long 사이의 중간 고리로 주로 사용


- System.currentTimeMillis()

: 현재 시각은 현재 JVM이 실행되고 있는 OS 시각을 기초로 가져오게 되며, 1970년 1월 1일 기준 시점으로 1/1000 초 단위로 연산됨.

public class ClassTest {

public static void main(String[] args) {

long current = System.currentTimeMillis();

System.out.println(current);

}

}


Calendar class

- Calendar.getInstance()를 이용해서 GregorianCalendar 객체를 얻는 방법

- new GregorianCalendar()를 이용해서 직접 객체를 얻어내는 방법

import java.util.Calendar;

import java.util.GregorianCalendar;



public class ClassTest {

public static void main(String[] args) {

Calendar cal1 = Calendar.getInstance();

System.out.println(cal1);

Calendar cal2 = new GregorianCalendar();

System.out.println(cal2);

}

}

결과

java.util.GregorianCalendar[time=1343449098546,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=14,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=6,WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=28,DAY_OF_YEAR=210,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=18,SECOND=18,MILLISECOND=546,ZONE_OFFSET=32400000,DST_OFFSET=0]


java.util.GregorianCalendar[time=1343449098546,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=14,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=6,WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=28,DAY_OF_YEAR=210,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=18,SECOND=18,MILLISECOND=546,ZONE_OFFSET=32400000,DST_OFFSET=0]


 get(int field) 메소드

- get() 메소드의 리턴 타입은 무조건 int 이다.

: 날짜 , 년도, 요일 등은 모든 데이터는 숫자로 나옵니다. 주의할점은 월(month)은 특이하게도 0에서 부터 시작하기 때문에 실제 월보다 하나 작은 값이 반환 됩니다.

- get() 안에는 Calendar 클래스의 상수를 정해주면 된다.

: get() 안에 쓰이는 값을 알 필요가 거의 없습니다. 모두 상수로 되어 있어서 Calendar.YEAR와 같이 원하는 상수가 있는지 확인 후에 호출해 주면 됩니다.

▶ set(int field, int value) 메소드

: 특정 데이터에 값을 주는 방법 ex) cal.set(Calendar.DATE, 22); 


▶ 요일 : Calendar.DAY_OF_WEEK

: 일요일이 날짜 데이터 값으로 '1'

import java.util.Calendar;


public class ClassTest {

public static void main(String[] args) {

Calendar cal = Calendar.getInstance();

int day = cal.get(Calendar.DAY_OF_WEEK);

System.out.println(day);

}

}


▶ getActualMaximum() : 말일이 몇 일까지인지를 알려줌.

import java.util.Calendar;


public class ClassTest {

public static void main(String[] args) {

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, 2012);

cal.set(Calendar.MONTH, 6); // 0부터 시작하므로  7월

int lastDay = cal.getActualMaximum(Calendar.DATE);

System.out.println("마지막날 : " + lastDay);

}

}



반응형

관련글 더보기

댓글 영역