날짜는 프로그램에서 자수 사용되는 데이터
Date 와 Calendar 클래스가 날짜 및 시각을 읽을 수 있도록 제공
이 두클래스는 모두 java.util 패키지에 포함
Date 클래스
Date는 날짜를 표현하는 클래스
Date 클래스는 객체간에 날짜 정보를 주고 받을때 주로 사용
Date 클래스에는 여러개의 생성자가 선언되어 있지만 대부분 Deprecated 되어
현재는 Date () 생성자만 주로 사용
Date now = new Date();
현재 날자를 문자열로 얻고 싶다면 toString() 메소드를 사용
toString() 메소드는 영문으로 된 날짜를 리턴하는데 만약 특정 문자열로 포맷으로 얻고 싶다면
java.text.SimpleDateFomat 클래스를 이용
public class DateExample{
public static void main(String[] args){
Date now = new Date();
String strNow1 = now.toString();
System.out.println(strNow1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초")
String strNow2 = sdf.format(now);
System.out.println(strNow2);
}
}
Calendar 클래스
Calendar 클래스는 달력을 표현한 클래스
Calendar 클래스는 추상(abstract)클래스 이므로 new 연산자를 사용해서 인스턴스를 생성할수 없다.
날짜와 시간을 계산하는 방법의 지역과 문화 나라에 따라 다르기 때문
Calendar 클래스에는 날짜와 시간을 계산하는데 꼭 필요한 메소드들만 선언되어있고
특정한 역법(날짜와 시간을 매기는 방법)을 따르는 계산 로직은 하위 클래스에서 구현하도록 되어있다.
특별한 역법을 사용하는 경우가 아니라면 직접 하위 클래스를 만들 필요는 없고 Calendar 클래스의 정적 메소드인 getInstance() 메소드를 이용하면 현재 운영체제에 설정되어있는 시간대 (TimeZone)를 기준으로한 Calendar 하위 객체를 얻을수 있다 .
Calendar now = Calendar.getInstance();
Calendar 객체를 얻었다면 get() 메소드를 이용해서 날짜와 시간에 대한 정보를 읽을수 있다.
int year = now.get(Calendar.YEAR); // 년도를 리턴
int month = now.get(Calendar.MONTH) + 1; // 월을 리턴
int day = now.get(Calendar.DAY_OF_MONTH) //일을 리턴
int week = now.get(Calendar.DAY_OF_WEEK); //요일을 리턴
int amPm = now.get(Calendar.AM_PM); // 오전/오후를 리턴
int hour = now.get(Calendar.HOUR); // 시를 리턴
int minute = now.get(Calendar.MINUTE); // 분을 리턴
int second = now.get(Calendar.SECOND); // 초를 리턴
get() 메소드를 호출할 때 사용한 매개값 모두 Calendar 클래스에 선언되어 있는 상수들이다.
다른 시간대에 해당하는 날짜와 시간을 출력하기 위해서는
-> Calendar 클래스의 오버로딩된 다른 getInstance() 메소드를 이용하면 간단하게 다른 시간대의 Calendar를 얻을수 있다
알고싶은 java.util.TimeZone 객체를 얻어, Calendar.getInstance()메소드의 매개값으로 넘겨주면 된다
TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar now = Calendar.getInstance(timeZone);
timeZone.getTimeZone() 메소드의 매개 값은 TimeZone클래스의 정적 메소드인
getAvailableIDs()를 호출하여 얻은 시간대 문자열중 하나를 사용하면 된다.
getAvaulableIDs() 메소드의 리턴타입은 String 배열이기 때문에 다음 프로그램을 이용해서 시간대 문자열 목록을 볼수 있다.
public class PrintTimeZoneID{
public static void main(String[] args){
String[] availableIDs = TimeZone.getAvailableIDs();
for(String ids : availableIDs){
System.out.println(id)
}
}
}
'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글
java.time 패키지 (0) | 2021.10.25 |
---|---|
Format 클래스 (0) | 2021.10.24 |
Math, Random 클래스 (0) | 2021.10.24 |
Wrapper(포장) 클래스 (0) | 2021.10.24 |
Array 클래스 (0) | 2021.10.24 |