LocalDate 객체로 오늘 날짜를 뽑은 다음에 그것을 문자열로 바꾸려면 이렇게 하면 된다.

LocalDate date = LocalDate.now(); //오늘 날짜 LocalDate 객체 생성
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String today = date.format(dateTimeFormatter); //LocalDate 객체를 String 객체로 바꿈

이렇게 LocalDate를 String으로 바꿔서 today라는 문자열을 DB에 저장했다고 하자.

나중에 DB에서 그 문자열로 된 날짜를 읽어들였는데 이 날이 무슨 요일인지 알고 싶으면 어떻게 하면 될까?

일단 문자열을 Date타입으로 바꾸자.

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date d = dateFormat.parse(today); //String이었던 today를 Date로 바꿈

이렇게 DateFormat과 parse() 메소드만 있으면 문자열을 Date 객체로 바꿀 수 있다.

그 후 이 Date 타입의 객체 d를 LocalDate 타입으로 바꿔준다.

LocalDate localDate = d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); //Date 객체 d를 LocalDate 객체로 바꿈

Date 객체.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); 해주면 LocalDate 객체를 반환한다.

위의 두 줄을 한 줄로

LocalDate localDate = dateFormat.parse(today).toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

이렇게 할 수도 있다.

 

그러고나면 localDate 객체에서 요일을 뽑아낼 수 있다.

DayOfWeek day = localDate.getDayOfWeek();
if(day == DayOfWeek.MONDAY) {
	System.out.println(today +"는 월요일입니다.");
}
else if (day == DayOfWeek.TUESDAY) {
	System.out.println(today +"는 화요일입니다.");
}
else if (day == DayOfWeek.WEDNESDAY) {
	System.out.println(today +"는 수요일입니다.");
}
else if (day == DayOfWeek.THURSDAY) {
	System.out.println(today +"는 목요일입니다.");
}
else if (day == DayOfWeek.FRIDAY) {
	System.out.println(today +"는 금요일입니다.");
}
else if (day == DayOfWeek.SATURDAY) {
	System.out.println(today +"는 토요일입니다.");
}
else {
	System.out.println(today +"는 일요일입니다.");
}

parse() 메소드를 사용할 때에는 ParseException이 발생하기 때문에 반드시 예외처리를 해주어야 한다.

예외처리를 해주지 않으면 이렇게 컴파일 에러가 발생한다. 이 포스팅은 예외처리에 관한 포스팅이 아니기 때문에 그냥 main 메소드에서 throw 해주었다.

전체 코드이다.

public class DateTest {
    public static void main(String[] args) throws ParseException{
        LocalDate date = LocalDate.now(); //오늘 날짜 LocalDate 객체 생성
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String today = date.format(dateTimeFormatter); //LocalDate 객체를 String 객체로 바꿈
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date d = dateFormat.parse(today); //String이었던 today를 Date로 바꿈
        LocalDate localDate = d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); //Date를 LocalDate로
        DayOfWeek day = localDate.getDayOfWeek();
        if (day == DayOfWeek.MONDAY) {
            System.out.println(today + "는 월요일입니다.");
        } else if (day == DayOfWeek.TUESDAY) {
            System.out.println(today + "는 화요일입니다.");
        } else if (day == DayOfWeek.WEDNESDAY) {
            System.out.println(today + "는 수요일입니다.");
        } else if (day == DayOfWeek.THURSDAY) {
            System.out.println(today + "는 목요일입니다.");
        } else if (day == DayOfWeek.FRIDAY) {
            System.out.println(today + "는 금요일입니다.");
        } else if (day == DayOfWeek.SATURDAY) {
            System.out.println(today + "는 토요일입니다.");
        } else {
            System.out.println(today + "는 일요일입니다.");
        }
    }
}

이 코드를 실행하면 다음과 같이 오늘의 요일을 출력하는 것을 볼 수 있다.

 

+ Recent posts