Date | Calendar | java.time 패키지 |
Calendar 추상 클래스
Calendar cal = new GregorianCalendar(); // 구체적으로 명시
Calendar cal = Calendar.getInstance(); // 팩토리 메서드를 사용해 추상화
new를 사용해 구체적인 클래스를 명시하는 것보다 현재 시간을 기준으로 인스턴스를 반환하게 하는 것이 유지보수 관점에서 훨씬 좋은 코드이다.
- 날짜와 시간을 같이 다룬다.
- month는 0부터 시작한다.
- 요일 또한 int로 반환하기 때문에 따로 문자열 처리를 해 주어야 한다.
- set() 하기 전에 clear()로 필드 초기화를 해 주는 것이 좋다. 초기화 하지 않으면 ms 차이로 의도한 대로 결과가 나오지 않을 수 있다.
- add(): 특정 필드의 값 증가/감소 - 다른 필드에 영향 O (ex. 8/31 + 1일 = 9/1)
- roll() : 특정 필드의 값 증가/감소 - 다른 필드에 영향 X (ex. 8/31 + 1일 = 8/1)
달력을 출력하는 코드를 작성할 때는 크게 두 가지를 고려해야 한다.
- 말일 구하기
- 달에 따라 말일이 28, 29, 30, 31로 다양하기 때문에 말일 구하는 것은 다음달 1일에서 -1일 하는 것으로 바꾸어생각할 수 있다. - 시작 요일 구하기
형식화 클래스
- DecimalFormat
- SimpleDateFormat
날짜와 숫자 ↔ 문자열로 형식을 자유로이 바꿀 수도 있다.
- 문자열 → 날짜와 시간(Date): parse
- 날짜와 시간(Date) → 문자열: format
DecimalFormat df = new DecimalFormat(패턴);
Number n = df.parse("문자열");
ex. int num = n.intValue();
parseInt, parseDouble에서는 콤마를 인식할 수 없기 때문에
DecimalFormat을 사용하면 문자열에서 숫자를 추출할 수 있다.
String s = df.format(숫자);
SimpleDateFormat을 사용하면 날짜와 시간을 다양한 형식으로 나타낼 수 있다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse("1919-03-01"); // 데이터 형식과 맞는 문자열 들어와야 함
String s = sdf.format(new Date()); // 현재 시간과 날짜 기준
+ https://hail2y.tistory.com/124
[JAVA] 천 단위마다 쉼표로 구분하기 - DecimalFormat, NumberFormat
두 클래스 모두 java.text 패키지에 속하여 숫자를 문자열로 또는 문자열을 숫자로 변환한다. 두 클래스 모두 패턴을 이용하여 특정 패턴 때문에 형 변환이 쉽지 않을 때 사용할 수 있다. 예를 들어
hail2y.tistory.com
'패스트캠퍼스 백엔드 부트캠프 3기 > JAVA' 카테고리의 다른 글
[JAVA] 제네릭스 (0) | 2025.01.20 |
---|---|
[JAVA] 컬렉션 프레임워크 (0) | 2025.01.20 |
[JAVA] java.lang 패키지 (0) | 2025.01.14 |
[JAVA] 예외 처리 (0) | 2025.01.13 |
[JAVA] 객체지향 프로그래밍의 이해 - 2 (2) | 2025.01.06 |