728x90
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 + "는 일요일입니다.");
}
}
}
이 코드를 실행하면 다음과 같이 오늘의 요일을 출력하는 것을 볼 수 있다.
728x90
'Java' 카테고리의 다른 글
[Java] 컬렉션 프레임워크 - Map (0) | 2020.02.10 |
---|---|
인텔리제이(IntelliJ IDEA) 단축키 및 약어 (0) | 2020.02.06 |
[Java] 컬렉션 프레임워크 (List, Set, Queue, Map) 개념 (0) | 2020.02.02 |
[Java] 입출력 스트림 (0) | 2020.01.29 |
[Java] Stream (스트림) (0) | 2020.01.21 |