ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 22) Date 클래스, Calendar 클래스, Format 클래스
    개발 공부/Java 2020. 10. 19. 19:12

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.
    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    이번 게시물에서는 날짜와 달력을 표현하는 Date, Calendar 클래스와 문자열의 형식을 지정하는 Format 클래스에 대해서 알아보겠습니다.

     

     

    1. Date 클래스


    Date 클래스날짜를 표현하는 클래스이다. Date() 생성자만 주로 사용한다. 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다.

     

    현재 날짜를 문자열로 얻고 싶다면 toString() 메소드를 사용하면 된다.

    만약 특정 문자열 형식으로 현재 날짜를 얻고 싶다면 java.text.SimpleDateFormat 클래스를 이용한다.

    Date now = new Date();
    String strNow1 = now.toString();

    strNow1은 "Wed Jan 24 12:18:11 KST 2020" 과 같은 형식으로 출력된다.
    하지만 직관적으로 봤을 때 순서가 평소 사용하던 것과 다르기 때문에, SimpleDateFormat 클래스를 이용하여 우리가 원래 사용하던 형식으로 출력해보려고 한다.

    Date now = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 mm월 dd일 hh시 mm분 ss초");
    String strNow2 = sdf.format(now);

    strNow2는 "2020년 01월 24일 12시 18분 11초" 와 같은 형식으로 출력된다.

     

     


     

    2. Calendar 클래스


    Calendar 클래스달력을 표현하는 클래스이다. Calendar 클래스는 추상 클래스이므로 new 연산자를 이용하여 인스턴스를 생성할 수 없다. 따라서 getInstance() 메소드를 이용하여 현재 운영체제에 설정되어 있는 시간대(TimeZone)를 기준으로 한 Calendar 하위 객체를 얻을 수 있다.

     

    Calendar now = Calendar.getInstance();

    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);

    먼저 Calendar의 getInstance() 메소드를 이용하여 now라는 Calendar 하위 객체를 생성한다.
    그 다음 get() 메소드를 이용하여 원하는 달력 정보를 얻어 올 수 있다.
    위는 년도, 월, 일, 요일, 오전/오후, 시, 분, 초를 얻어온 것이다.

     

    우리나라가 아니라 다른 시간대에 해당하는 날짜와 시간을 출력하기 위해서는 java.util.TimeZone 클래스를 이용하면 된다.

    TimeZone timeZone = TimeZone.getTimeZone("America/Vancouver");
    Calendar now = Calendar.getInstance( timeZone );

    TimeZone의 getTimeZone() 메소드를 이용하여 원하는 시간대 코드를 매개값으로 주어 TimeZone 객체를 만든다.

    Calendar 하위 객체를 생성할 때 getInstance()의 매개값으로 TimeZone 객체를 주면 해당 시간대의 정보를 얻을 수 있다.

     


     

    3. Format 클래스


    Format 클래스는 java.text 패키지에 포함되어있다. 숫자, 날짜, 문자열 등을 원하는 형식으로 출력할 수 있도록 도와주는 클래스이다.

     

    3-1) 숫자 형식 클래스(DecimalFormat)

    DecimalFormat 은 숫자 데이터를 원하는 형식으로 표현하기 위해 사용한다.

    DecimalFormat의 패턴 (출처: 구글 이미지)

     

    이 중 적용할 패턴을 선택하여 DecimalFormat 생성자의 매개값으로 지정하여 객체를 생성하면 된다.

    DecimalFormat df = new DecimalFormat("#,###.0");
    String result = df.format(1234567.89);

    result에는 "1,234,567.9"가 들어간다.
    DecimalFormat의 생성자의 매개값으로 패턴을 적용하였다면, format() 메소드를 호출하여 문자열을 얻는다.

     

     

    3-2) 날짜 형식 클래스(SimpleDateFormat)

    java.text.SimpleDateFormat 클래스는 Date 클래스에서 리턴되는 날짜를 특정 문자열 포맷으로 얻을 때 사용한다.

    SimpleDateFormat의 패턴 (출처: 구글 이미지)

    패턴에는 자릿수에 맞게 기호를 반복하여 사용할 수 있다.

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
    String strDate = sdf.format(new Date());

    strDate에는 "2020년 01월 24일"과 같은 형태로 입력된다.
    SimpleDateFormat의 생성자 매개값으로 패턴을 지정하고, format() 메소드를 통해 문자열을 얻는다.

     

     

    3-3)문자열 형식 클래스(MessageFormat)

    MessageFormat 클래스를 사용하면 문자열에 데이터가 들어갈 자리를 표시해 두고, 프로그램이 실행하면서 동적으로 데이터를 삽입해 문자열을 완성시킬 수 있다.

    회원 ID: Kyle
    회원 이름: 김카일
    회원 전화: 010-1234-5678

    만약 위와 같이 회원 정보를 출력한다고 가정해보자.
    그렇다면 MessageFormat 클래스를 이용하여 아래의 코드를 통해 깔끔하게 문자열을 출력할 수 있다.

    String message = "회원 ID: {0} \n회원 이름: {1} \n회원 전화: {2}";
    String result = MessageFormat.format(message, id, name, tel);


    {0}, {1}, {2}에 각각 id, name, tel 이 삽입되면서 회원 ID와 회원 이름과 회원 전화가 출력된다.

     

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

     

    댓글

Designed by Tistory.