티스토리 뷰
주의 사항!
- 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
자바는 시스템의 날짜 및 시각을 읽을 수 있도록 Date와 Calendar 클래스를 제공하고 있습니다. 이 두 클래스는 모두 java.util 패키지에 포함되어 있습니다.
Date 클래스
Date는 날짜를 표현하는 클래스입니다. Date 클래스는 객체 간에 날짜 정보를 주고받을 때 주로 사용됩니다. Date 클래스에는 여러 개의 생성자가 선언되어 있지만 대부분 Deprecated(권장하지 않는)되어 현재는 Date() 생성자만 주로 사용합니다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만듭니다.
Date now = new Date();
현재 날짜를 문자열로 얻고 싶다면 toString() 메서드를 사용하면 됩니다. toString() 메서드는 영문으로 된 날짜를 리턴하는데 만약 특정 문자열 포맷으로 얻고 싶다면 java.text.SimpleDateFormat 클래스를 이용하면 됩니다.
다음 예제는 현재 날짜를 출력하는 예제입니다.
//Main.java
package Example;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
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);
}
}
/*
실행결과
Wed Apr 21 16:30:08 KST 2021
2021년 04월 21일 04시 30분 08초
*/
Calendar 클래스
Calendar 클래스는 달력을 표현한 클래스입니다. Calendar 클래스는 추상 클래스이므로 new 연산자를 사용해서 인스턴스를 생성할 수 없습니다. 그 이유는 날짜와 시간을 계산하는 방법이 지역과 문화, 나라에 따라 다르기 때문입니다. 우리나라만 해도 양력과 음력이 같이 사용되고 있습니다.
그래서 Calendar 클래스에는 날짜와 시간을 계산하는데 꼭 필요한 메서드들만 선언되어 있고, 특정한 역법을 따르는 계산 로직은 하위 클래스에서 구현하도록 되어 있습니다. 특별한 역법을 사용하는 경우가 아니라면 직접 하위 클래스를 만들 필요는 없고 Calendar 클래스의 정적 메서드인 getInstance() 메서드를 이용하면 현재 운영체제에 설정되어 있는 시간대를 기준으로 한 Calendar 하위 객체를 얻을 수 있습니다.
Calendar now = Calendar.getInstance();
Calendar 객체를 얻었다면 get() 메서드를 이용해서 날짜와 시간에 대한 정보를 읽을 수 있습니다.
int year = new.get(Calendar.YEAR); //년도를 리턴
int month = new.get(Calendar.MONTH) + 1; //월을 리턴
int day = new.get(Calendar.DAY_OF_MONTH); //일을 리턴
int week = new.get(Calendar.DAY_OF_WEEK); //요일일 리턴
int amPm = new.get(Calendar.AM_PM); //오전/오후를 리턴
int hour = new.get(Calendar.HOUR); //시를 리턴
int minute = new.get(Calendar.MINUTE); //분을 리턴
int second = new.get(Calendar.SECOND); //초를 리턴
get() 메서드를 호출할 때 사용한 매개 값은 모두 Calendar 클래스에 선언되어 있는 상수들입니다.
다음 예제는 운영체제의 시간대를 기준으로 Calendar를 얻는 예제입니다.
//Main.java
package Example;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH);
int day = now.get(Calendar.DAY_OF_MONTH);
int week = now.get(Calendar.DAY_OF_WEEK);
String strWeek = null;
switch (week) {
case Calendar.MONDAY:
strWeek = "월";
break;
case Calendar.TUESDAY:
strWeek = "화";
break;
case Calendar.WEDNESDAY:
strWeek = "수";
break;
case Calendar.THURSDAY:
strWeek = "목";
break;
case Calendar.FRIDAY:
strWeek = "금";
break;
case Calendar.SATURDAY:
strWeek = "토";
break;
case Calendar.SUNDAY:
strWeek = "일";
break;
}
int amPm = now.get(Calendar.AM_PM);
String strAmPm = null;
if (amPm == Calendar.AM) {
strAmPm = "오전";
} else {
strAmPm = "오후";
}
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
System.out.print(year + "년 ");
System.out.print(month + "월 ");
System.out.print(day + "일 ");
System.out.print(strWeek + "요일 ");
System.out.print(strAmPm + " ");
System.out.print(hour + "시 ");
System.out.print(minute + "분 ");
System.out.println(second + "초 ");
}
}
/*
실행결과
2021년 3월 21일 수요일 오후 4시 49분 41초
*/
'공부 일지 > JAVA 공부 일지' 카테고리의 다른 글
자바, java.time 패키지 (0) | 2021.04.22 |
---|---|
자바, Format 클래스 (0) | 2021.04.21 |
자바, Math, Random 클래스 (0) | 2021.04.21 |
자바, Wrapper(포장) 클래스 (0) | 2021.04.21 |
자바, Arrays 클래스 (0) | 2021.04.21 |