[Java] 날짜, 시간 관련 함수
public class ExCalendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.print(c.get(Calendar.YEAR)+ "년도 ");
System.out.print(c.get(Calendar.MONTH)+1 + "월 "); //월을 나타내는 함수는 0부터 시작한다.
System.out.print(c.get(Calendar.DATE) + "일 ");
System.out.print(c.get(Calendar.HOUR) + "시 ");
System.out.print(c.get(Calendar.MINUTE) + "분 ");
System.out.print(c.get(Calendar.SECOND) + "초 ");
System.out.println();
Date date = c.getTime();
System.out.println(date);
}
}
* 날짜, 시간 관련 함수들은 범용으로 자주 사용하는 것들이므로,
자바 라이브러리에 기본으로 포함되어 있다.
* 먼저
대부분 클래스의 인스턴스는 new를 통해서 만들지만
이렇게 클래스명. 이렇게 바로 점 찍어서 인스턴스를 부르기도 한다.
Calendar.getInstance();
이건 객체가 생성되지 않았는데?
=> 일단 이것은 클래스와 연관되어 있다는 말이고,
이것만 봤을 때 이게 static이란 것을 의미.
cf. 위에서 c.getTime(); 는? => non-static 이다.
다른 것들은 암기의 영역이다.
public class EXTime {
public static void main(String[] args) {
LocalDate d = LocalDate.now();
LocalTime t = LocalTime.now();
LocalDateTime dt = LocalDateTime.now();
System.out.println("오늘 날짜 => " + d);
System.out.println("오늘 시간 => " + t);
System.out.println("오늘 날짜와 시간 => " + dt);
String total = dt.getYear() + "년 ";
total += dt.getMonthValue() + "월 ";
total += dt.getDayOfMonth() + "일 ";
total += dt.getDayOfWeek() + " ";
total += dt.getHour() + "시 ";
total += dt.getMinute() + "분 ";
total += dt.getSecond() + "초 ";
System.out.println();
System.out.println(total);
System.out.println();
System.out.println("오늘부터 300일 기념일 : " + d.plusDays(300));
System.out.println("오늘부터 12주 후의 날짜 : " + d.plusWeeks(12));
System.out.println();
LocalDate ld = LocalDate.of(2002, 12, 19);
System.out.println("그날부터 900일 기념일 : " + ld.plusDays(900));
System.out.println("그날부터 52주 후의 날짜 : " + ld.plusWeeks(52));
}
}
- 위에서 봤던 것처럼 LocalDateTime.now(); 도 static임을 확인할 수 있다.
- 출력을 할 때,
System.out.println("오늘 날짜 => " + d);
System.out.println("오늘 시간 => " + t);
System.out.println("오늘 날짜와 시간 => " + dt); 처럼
객체 이름을 그대로 주면?
원래는 주소가 그대로 출력된다.
주소가 나오는 이유는 이게 toString으로 해석되어서 그렇다.
그런데 LocalTime, LocalDate, LocalDateTime 등은 모두 다 toString이 예쁘게 구현되어 있다.
-> 그래서 주소가 안 나오고 예쁘게 출력이 된다.
----------------------------------------------------------------
total += dt.getDayOfWeek() + " "; 이것은
주가 아니라 요일을 의미.
다른 메서드들은 전부 숫자인데
요일은 숫자로 표현할 수 없으니까 영어로 대체한 듯.