DateFormat

DateFormat (날짜·시간 형식화 추상 클래스)

날짜·시간 형식화 하위 클래스를 위한 추상 클래스로, 언어에 독립적인 방식으로 날짜·시간을 형식화(format)하고 파싱(parse)해요. SimpleDateFormat 같은 날짜·시간 형식화 하위 클래스는 형식화(날짜 → 텍스트), 파싱(텍스트 → 날짜), 정규화(normalization)를 가능하게 해요.

출처: Java API Reference

본문

날짜는 Date 객체로, 또는 1970년 1월 1일 00:00:00 GMT 이후의 밀리초로 표현돼요. DateFormat은 기본 또는 주어진 로케일과 여러 형식 스타일을 기반으로 기본 날짜·시간 포매터를 얻는 많은 클래스 메서드를 제공해요. 형식 스타일에는 FULL, LONG, MEDIUM, SHORT가 있어요.

DateFormat은 어떤 로케일의 날짜든 형식화·파싱할 수 있게 도와줘요. 코드가 월·요일·그리고 달력 형식(음력 대 양력)까지 로케일 관례에서 완전히 독립적일 수 있어요.

현재 로케일의 날짜를 형식화하려면 정적 팩토리 메서드 중 하나를 쓰면 돼요.

myString = DateFormat.getDateInstance().format(myDate);

여러 날짜를 형식화한다면 format을 얻고 여러 번 쓰는 것이 더 효율적이에요. 시스템이 로컬 언어·국가 관례 정보를 여러 번 가져오지 않아도 되기 때문이에요.

DateFormat df = DateFormat.getDateInstance();
for (int i = 0; i < myDate.length; ++i) {
    output.println(df.format(myDate[i]) + "; ");
}

다른 로케일의 날짜를 형식화하려면 getDateInstance() 호출에 지정하면 돼요.

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);

지정된 로케일이 "ca"(calendar), "rg"(region override), "tz"(timezone) 유니코드 확장을 포함하면 형식화를 위한 달력·국가·시간대가 덮어쓰여요. "ca"와 "rg"가 모두 지정되면 "ca" 확장의 달력이 "rg" 확장의 암시적 달력을 우선해요.

DateFormat으로 파싱도 할 수 있어요.

myDate = df.parse(myString);

getDateInstance는 그 나라의 일반 날짜 형식을 얻고, getTimeInstance는 시간 형식, getDateTimeInstance는 날짜·시간 형식을 얻어요. 이 팩토리 메서드에 다른 옵션을 전달해 결과 길이를 제어할 수 있어요(SHORTMEDIUMLONGFULL). 정확한 결과는 로케일에 따라 달라지지만 일반적으로 다음과 같아요.

  • SHORT — 완전히 숫자형, 예: 12.13.52 또는 3:30pm
  • MEDIUM — 더 김, 예: Jan 12, 1952
  • LONG — 더 김, 예: January 12, 1952 또는 3:30:32pm
  • FULL — 상당히 완전하게 지정됨

더 알아보기 (Learn more)

Java 공식 API