우와한 개발자

[Java] 날짜 클래스(Date, Calendar)와 지역과 시간대 클래스(Locale, Timezone)

by 우와한개발자

[날짜 클래스]

1. Date

  • java.util.Date
  • 컴퓨터의 날짜 정보를 읽어 Date 객체 생성
생성자/메서드 설명
Date() 현재 날짜 정보로 Date 객체 생성
Date(long date) 1970년 1월 1일 00:00:00 이후의 시간을 밀리초로 입력해 생성
toString() 현재 날짜와 시간 정보를 문자열로 반환
getTime() 1970년 1월 1일 0시 기준으로 현재 시점을 밀리초로 반환
Date now = new Date();
System.out.println(now);           // 현재 날짜/시간 출력
System.out.println(now.getTime()); // 밀리초 값 출력
⚠️ java.sql.Date도 있으니 주의

2. Calendar

  • 달력을 표현한 추상 클래스
  • new가 아닌 getInstance()로 객체 생성
Calendar cal = Calendar.getInstance();

// get() + Calendar 상수로 날짜/시간 조회
cal.get(Calendar.YEAR)          // 연도
cal.get(Calendar.MONTH) + 1    // 월 ( 0부터 시작이므로 +1 필요)
cal.get(Calendar.DATE)          // 일
cal.get(Calendar.AM_PM)         // 0 = 오전, 1 = 오후
cal.get(Calendar.HOUR)          // 시
cal.get(Calendar.MINUTE)        // 분
cal.get(Calendar.SECOND)        // 초
cal.getTimeInMillis()           // 밀리초

// 다른 TimeZone 적용
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
cal = Calendar.getInstance(tz);
⚠️ Calendar.MONTH는 0부터 시작

 

[ 지역과 시간대 클래스 ]

1. Locale

  • 특정 지리적, 정치적, 문화적 영역을 나타내는 클래스
  • 주로 NumberFormat, DecimalFormat, SimpleDateFormat 등 형식화 클래스와 함께 사용
Locale locale = new Locale("ko", "KR");
// Locale locale = Locale.forLanguageTag("en-US");
// Locale locale = Local.of("en","US");
locale.getLanguage();       // "ko"
locale.getCountry();        // "KR"
locale.getDisplayCountry(); // "대한민국"

// 숫자 형식을 로케일에 따라 다르게 출력
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de", "DE"));
DecimalFormat df = (DecimalFormat) nf;
df.applyPattern("###,###.###");
df.format(123456.789); // 독일식: 123.456,789
  • Local.of(언어코드, 지역코드)
    • 언어코드 : 소문자 문자열
    • 지역코드 : 대문자 문자열
  • 지역(국가)마다 언어가 다르고, 통화가 다름
  • 지역(국가)마다 언어가 다르고, 통화가 다름

2. Timezone

  • Timezone 객체는 시간대 오프셋을 나타냄
  • 우리나라 타임존 ID 는 “Asia/Seoul”
TimeZone tz = TimeZone.getDefault();
tz.getID();           // "Asia/Seoul"
tz.getDisplayName();  // "Korea Standard Time"
tz.getRawOffset() / 1000 / 60; // UTC와의 차이(분)
tz.useDaylightTime(); // 서머타임 사용 여부

// 특정 TimeZone 지정
TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles");

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기