Calendar : 추상클래스로 객체 생성 X
Calendar cal = new Calendar(); // 오류 => 추상클래스는 인스턴스 생성 X
Calendar cal = Calendar.getInstance();
GregorianCalendar : 그레고리력에 맞게 구현한 Calendar를 상속받아 구현한 클래스 ⇒ 태국을 제외한 모든 국가에서 사용 & 시스템의 국가와 지역설정을 확인해서 설정BuddhistCalendar : 태국에서 사용Date ↔ Calendar
Calendar → Date
Calendar cal = Calendar.getInstance();
...
Date d = new Date(cal.getTImeInMillis(); // Date(long date)
Date → Calendar
Date d = new Date();
...
Calendar cal = Calendar.getInstance();
cal.setTIme(d);
주요 메서드
getInstance() : 현재 시스템의 날짜와 시간에 대한 정보set(int field, int value) : 원하는 날짜와 시간으로 설정get(int field) : 원하는 필드(연도, 월, 일..)의 값을 얻음ex) 두 날짜 간 차이 구하기
import java.util.*;
class CalendarEx3 {
public static void main(String[] args) {
final int[] TIME_UNIT = {3600, 60, 1}; // 큰 단위를 앞에 놓는다.
final String[] TIME_UNIT_NAME = {"시간 ", "분 ", "초 "};
Calendar time1 = Calendar.getInstance();
Calendar time2 = Calendar.getInstance();
// time1을 10시 20분 30초로 설정
time1.set(Calendar.HOUR_OF_DAY, 10);
time1.set(Calendar.MINUTE, 20);
time1.set(Calendar.SECOND, 30);
// time2을 20시 30분 10초로 설정
time2.set(Calendar.HOUR_OF_DAY, 20);
time2.set(Calendar.MINUTE, 30);
time2.set(Calendar.SECOND, 10);
System.out.println("time1 : " + time1.get(Calendar.HOUR_OF_DAY) + "시 " + time1.get(Calendar.MINUTE) + "분 " + time1.get(Calendar.SECOND) + "초 ");
System.out.println("time2 : " + time2.get(Calendar.HOUR_OF_DAY) + "시 " + time2.get(Calendar.MINUTE) + "분 " + time2.get(Calendar.SECOND) + "초 ");
long difference = Math.abs(time2.getTimeInMillis() - time1.getTimeInMillis()) / 1000;
System.out.println("time1과 time2의 차이는 " + difference + "초 입니다.");
String tmp = "";
for(int i=0; i<TIME_UNIT.length; difference %= TIME_UNIT[i], i++) {
tmp += difference/TIME_UNIT[i] + TIME_UNIT_NAME[i];
// difference %= TIME_UNIT[i];
}
System.out.println("시분초로 변환하면 " + tmp + "입니다.");
}
}
add(int field, int amount) : 필드의 값을 원하는 만큼 증가 또는 감소 ⇒ 특정 날짜 또는 시간을 기점으로 해서 일정 기간 전후의 날짜 & 시간 알아낼 수 있음roll(int field, int amount) : 지정한 필드의 값 증가 또는 감소
import java.util.*;
class CalendarEx5 {
public static void main(String[] args) {
Calendar date = Calendar.getInstance();
date.set(2015, 0, 31); // 2005년 1월 31일
System.out.println(toString(date));
date.roll(Calendar.MONTH, 1);
System.out.println(toString(date));
}
public static String toString(Calendar date) {
return date.get(Calendar.YEAR) + "년 " + (date.get(Calendar.MONTH)+1) + "월 " + date.get(Calendar.DATE) + "일";
}
}
DecimalFormat의 패턴에 사용되는 기호
| 기호 | 의미 | 패턴 | 결과(1234567.89) |
|---|---|---|---|
| 0 | 10진수 (값이 없을 때는 0) | 00.00000000000.0000 | 12345681234567.90001234567.8900 |
| # | 10진수 | ##.###########.#### | 12345681234567.91234567.89 |
| . | 소수점 | #.# | 1234567.9 |
| - | 음수부호 | #.#--#.# | 1234567.9--1234567.9 |
| , | 단위 구분자 | #,###,###.##,####,## | 1,234,567.91,23,45,68 |
| E | 지수 기호 | #E00E0##E000E0####E00000E0#.#E00.0E00.00000000E000.0000000E0000.00000E0#.########E0#.#######E0###.######E0 | 생략 |
| ; | 패턴구분자 | #,###,##+;#,###,##- | 1,234,567.89+1,234,567.89- |
| % | 퍼센트 | #.#% | 123456789% |
| \u2030 | 퍼밀(퍼센트* 10) | #.#\u2030 | 1234567890% |
| \u00a4 | 통화 | \u00a4 #,### | \ 1,234,568 |
| ' | escape문자 | '#' #,###"#,### | #1,234,568 |
사용 방법
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number);