🔶 수업중 과제 : 날짜 포맷
✔ 문제
- 문제
public class After100Days { public static void main(String[] args) { // 기존 날짜 클래스들을 활용하는 법 Calendar cal = Calendar.getInstance(); // TODO // 단계-1) // 위의 cal 인스턴스를 활용하여 년월일 성분을 구하고 // 각각 year, month, date 라는 정수형 변수에 대입합니다. // Hint) Calendar 클래스의 get 멤버 메서드와 // Calendar의 멤버 필드(YEAR, MONTH, DATE) 성분을 활용합니다. // 참고) https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html // 주의) 월(달) 성분은 0부터 시작하기 때문에 1을 더해야 합니다. // TODO // printf 메서드를 활용하여 아래와 같은 형식으로 화면에 출력합니다. // ex) 2021년 2월 18일 // TODO // 단계-2) // 금일 날짜로부터 100일후에 해당되는 연산을 수행합니다. // Hint) Calendar 클래스의 set, add 멤버 메서드를 활용합니다. // 주의사항) 월(month) 성분 입력시 -1을 빼고 입력합니다. // add 메서드 이용시 첫번째 인자로 Calendar.DATE혹은 Calendar.DAY_OF_MONTH 필드를 사용합니다. // 단계-3) // 위에서 구한 날짜를 Date Formatter 클래스를 활용하여 // 아래와 같은 형식으로 화면에 출력합니다. // ex) 2021년 O월 O일 // Hint) SimpleDateFormat 클래스를 활용합니다. // 참고) https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat dt = new SimpleDateFormat("yyyy년 M월 d일"); String str = dt.format(cal.getTime()); System.out.println(str); ////////////////////////////////////////////////////////////////// // time 패키지의 날짜 클래스들을 활용하는 법 // 단계-4) // DateTimeFormatter를 활용하여 아래와 같이 출력될 수 있도록 날짜 포맷을 // 설정합니다. // ex) 2021년 O월 OO일 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일"); // TODO // 단계-5 : LocalDateTime의 멤버 메서드(now)를 활용하여 금일 날짜를 구하여 // format 멤버 메서드와 위에서 작성한 날짜 포맷 객체를 메서드 인자로 활용하여 금일 날짜를 인쇄합니다. // TODO // 단계-6 : 금일로부터 100일이후의 날짜를 LocalDateTime 멤버 메서드(plusDays)를 활용하여 // 구한후 위와 동일하게 포맷터의 메서드(format)를 활용하여 포맷 객체를 인자로 입력하여 구한 날짜를 인쇄합니다. } // main }
▶ JAVA 코드
package com.javateam.jse;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class After100Days_practice {
public static void main(String[] args) {
// 기존 날짜 클래스들 활용하는법
Calendar cal = Calendar.getInstance(); // Calendar 인스턴스 객체 생성
// 1) Cal의 인스턴스를 활용하여 년 월일 성분 을 구한후 변수 대입
// int year,month,date 변수 생성 후 cal 인스턴스 이용하여 년,월,일 성분 각 변수에 대입
int year = cal.get(cal.YEAR);
int month = cal.get(cal.MONTH) + 1;
int date = cal.get(cal.DATE);
// printf 메서드 사용하여 2021년 2월 18일 형식으로 출력
System.out.printf("%d년 %d월 %d일",year,month,date);
System.out.println();
// 2) 금일부터 100일 후에 해당되는 연산 수행
// cal.set => 강사님 답안
cal.set(year, month-1, date); // 월 입력시 -1을 빼고 입력한다
cal.add(Calendar.DATE,100 );
// 3) Date Formatter 클래스 사용하여 날짜 출력
SimpleDateFormat dt = new SimpleDateFormat("yyyy년 M월 d일");
String str = dt.format(cal.getTime());
System.out.println(str);
// 4) DateTimeFormatter 클래스 사용하여 날짜 2021년 O월 OO일 형식으로 출력
// LocalDateTime dt2 = LocalDateTime.now(); // 5번답 => 내가 작성
DateTimeFormatter today = DateTimeFormatter.ofPattern("yyyy년 M월 d일");
// System.out.println(dt2.format(today)); // 5번 답 => 내가 작성
// 5) LocalDateTime의 멤버 메서드(now)를 활용하여 금일 날짜를 구하여
// format 멤버 메서드와 위에서 작성한 날짜 포맷 객체를 메서드 인자로 활용하여 금일 날짜를 인쇄합니다.
LocalDateTime dt3 = LocalDateTime.now();
// DateTimeFormatter dateTime = DateTimeFormatter.ofPattern("yyyy년 M월 d일"); // 위에서 사용했기때문에 선언 안해도 됨 => 내가 작성
System.out.println(dt3.format(today));
// 6) 금일로부터 100일이후의 날짜를 LocalDateTime 멤버 메서드(plusDays)를 활용하여
// 구한후 위와 동일하게 포맷터의 메서드(format)를 활용하여 포맷 객체를 인자로 입력하여 구한 날짜를 인쇄합니다.
LocalDateTime dt4 = LocalDateTime.now(); // 위에서 선언했기 떄문에 선언 안하고 위에꺼 사용해도 된다 => 내가 작성
System.out.println(dt4.plusDays(100)); // 시,분, 초 까지 출력 => 내가 작성
// 답 : System.out.println(dt4.plusDays(100).format(today)); // 시,분, 초 제외하고 출력 => 강사님 답안
}
}
▶ 코드 설명
1) Calendar 클래스를 사용하는 cal 인스턴스 객체 생성
2) 1번 : int year,month,date 변수 생성 후 cal 인스턴스 이용하여 년,월,일 성분 각 변수에 대입
3) 1-2번 : printf 메서드 사용하여 2021년 2월 18일 형식으로 출력
4) 2번 : add 메서드 사용하여 금일부터 100일 후 날짜 연산
5) 3번 : Date Formatter 클래스 사용하여 날짜 출력
6) 4번 : DateTimeFormatter 클래스 사용하여 날짜 2021년 O월 OO일 형식으로 출력
7) 5번 : LocalDateTime의 멤버 메서드(now)를 활용하여 금일 날짜를 구하여 format 멤버 메서드와 위에서 작성한 날짜 포맷 객체를 메서드 인자 활용하여 금일날짜 출력
8) 6번 금일로부터 100일이후의 날짜를 LocalDateTime 멤버 메서드(plusDays)를 활용하여 구한후 포맷터의 메서드(format)를 활용하여 포맷 객체를 인자로 입력하여 구한 날짜 출력
▶ 출력 결과창(Console)