DateTimeFormatter (Java Platform SE 8 )

Parses the text using this formatter, without resolving the result, intended for advanced use cases. Parsing is implemented as a two-phase operation. First, the text is parsed using the layout defined by the formatter, producing a Map of field to value, a

docs.oracle.com

 

날짜와 시간 다루기 예제

public class Main {
    public static void main(String[] args) {
        System.out.println("now()를 활용하여 생성");
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println(date);
        System.out.println(time);
        System.out.println(dateTime);

        //날짜를 직접 셋팅
        System.out.println("of()를 활용하여 생성");
        LocalDate newDate = LocalDate.of(2021, 03, 29);
        LocalTime newTime = LocalTime.of(22, 50, 55);

        System.out.println(newDate);
        System.out.println(newTime);
    }
}  

now() vs of()

  • 위 예제에서 사용한 now() 와 of()는 객체를 생성할 때 사용됩니다. now()는 현재의 날짜 시간을, of()는 지정하는 값이 필드에 담겨집니다.

날짜와 시간의 형식 수정

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);  //java에 enum으로 정의된 클래스가 있음
        String shortFormat = formatter.format(LocalTime.now());   //formatter 객체의 format() 메소드를 사용해 LocalTime타입을 넣어 String타입으로 변환
        System.out.println(shortFormat);
    }
} 

만약 원하는 형식이 있다면?!

DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String myDate = newFormatter.format(LocalDate.now());
System.out.println(myDate);

 

날짜와 시간의 차이 계산

  • 나는 지금까지 사칙연산으로 비교를 하였는데 이렇게 좋은 기능이 있는지 몰랐다.....
  • 오늘 일자와 생일 일자간의 날짜 차이를 계산하기 위해서는 between()을 사용하면 구할 수 있습니다.
    LocalDate today = LocalDate.now();
    LocalDate birthday = LocalDate.of(2021, 8, 9);
    Period period = Period.between(today, birthday);
    System.out.println(period.getMonths());
    System.out.println(period.getDays());

요일 구하기

// 1. LocalDate 생성
LocalDate date = LocalDate.of(2021, 12, 25);
System.out.println(date); // // 2021-12-25

// 2. DayOfWeek 객체 구하기
DayOfWeek dayOfWeek = date.getDayOfWeek();

// 3. 숫자 요일 구하기
int dayOfWeekNumber = dayOfWeek.getValue();

// 4. 숫자 요일 출력
System.out.println(dayOfWeekNumber); // 6

switch (dayOfWeekNumber) {
    case 1: answer = "MON";
        break;
    case 2: answer = "TUE";
        break;
    case 3: answer = "WED";
        break;
    case 4: answer = "THU";
        break;
    case 5: answer = "FRI";
        break;
    case 6: answer = "SAT";
        break;
    case 7: answer = "SUN";
        break;
}
복사했습니다!