날짜와 시간 / Date, Time, CalenderJava2022. 12. 10. 09:37
Table of Contents
728x90
728x90
- Date는 JDK 1.0부터, Calender는 JDK 1.1부터 제공되었다.
- JDK 1.8부터 java.time 패키지로 Calender와 Date의 단점을 개선한 클래스들이 추가되었다.
- Date, Calender의 사용을 지양하자
Date
// 객체를 생성하여 현재 날짜 출력해보기
Date myDate = new Date();
System.out.println(myDate);
// getTime : 1970년 1월 1일 00:00:00 UTC부터 주어진 날짜 사이의 경과 시간을 밀리초로 나타냄
System.out.println(myDate.getTime()); // 1670634141973
myDate.setTime(1639426833210L);
System.out.println(myDate.getTime()); // 왜 안쓰는지 알거같다
// SimpleDateFormat으로 String타입 날짜를 date로 변환하여 사용.
String myString = "20221210";
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
Date mydate = dtFormat.parse(myString); // throws ParseException
System.out.println(mydate); // Sat Dec 10 00:00:00 KST 2022
위 예시만 봐도 너무 불편하다
Calender
- 추상클래스이기 때문에 객체를 직접 생성할 수 없다
Field(Static int) | 설명 |
YEAR | 현재 년도 |
MONTH | 현재 월 (0~11의 값) |
DATE / DAY_OF_MONTH | 몇 일인지(날짜) |
DAY_OF_YEAR | 현재 년도의 날짜 |
DAY_OF_WEEK | 현재 요일 ( 일요일 1 ~ 토요일 7) |
WEEK_OF_YEAR | 1년 중 몇 번째 주인지 |
WEEK_OF_MONTH | 현재 월에서 몇 째 주인지 |
HOUR | 12시간 단위의 시간 (0~11) |
HOUR_OF_DAY | 24시간 단위의 시간 (0~23) |
MINUTE | 분 (0~59) |
SECOND | 초 (0~59) |
MILLISECOND | 밀리 세컨드 단위 |
Calendar today = Calendar.getInstance();
System.out.println("올 해의 년도 : " + today.get(Calendar.YEAR));
System.out.println("월(0~11, 0:1월): " + today.get(Calendar.MONTH));
System.out.println("올 해의 몇 째 주: " + today.get(Calendar.WEEK_OF_YEAR));
System.out.println("이 달의 몇 째 주: " + today.get(Calendar.WEEK_OF_MONTH));
System.out.println("이 달의 몇 일: " + today.get(Calendar.DATE));
System.out.println("이 달의 몇 일: " + today.get(Calendar.DAY_OF_MONTH));
System.out.println("올 해의 몇 일: " + today.get(Calendar.DAY_OF_YEAR));
System.out.println("요일(1~7, 1:일요일): " + today.get(Calendar.DAY_OF_WEEK));
System.out.println("이 달의 몇 째 요일: " + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("시간(0~11): " + today.get(Calendar.HOUR));
System.out.println("시간(0~23): " + today.get(Calendar.HOUR_OF_DAY));
System.out.println("분(0~59): " + today.get(Calendar.MINUTE));
System.out.println("초(0~59): " + today.get(Calendar.SECOND));
// Console
올 해의 년도 : 2022
월(0~11, 0:1월): 11
올 해의 몇 째 주: 50
이 달의 몇 째 주: 2
이 달의 몇 일: 10
이 달의 몇 일: 10
올 해의 몇 일: 344
요일(1~7, 1:일요일): 7
이 달의 몇 째 요일: 2
시간(0~11): 9
JAVA.TIME
날짜 가져오기
LocalDate nowDate = LocalDate.now();
LocalDate ofDate = LocalDate.of(2022, 12, 10);
LocalDateTime nowDateTime = LocalDateTime.now();
LocalDateTime ofDateTime = LocalDateTime.of(2022, 12, 10, 9, 40, 13);
System.out.println(nowDate); // 현재 년/월/일
System.out.println(ofDate); // ofDate 리턴
System.out.println(nowDateTime); // 현재 년/월/일/시/분/초/밀리초
System.out.println(ofDateTime); // ofDateTime 리턴
활용하기
// 내일의 날짜
LocalDateTime localDateTime = LocalDateTime.now();
LocalDateTime tomorrow = localDateTime.plusDays(1);
System.out.println(tomorrow);
// 내일 날짜의 끝 시간(23:59:59.99999...)
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1).with(LocalTime.MAX);
System.out.println(localDateTime);
// 정오
LocalDateTime localDateTime = LocalDateTime.now().with(LocalTime.NOON);
System.out.println(localDateTime);
//자정
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
String date = LocalDate.now().atStartOfDay().format(dateTimeFormatter);
System.out.println(date);
// LocalDate(Time) → String
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
LocalDate.now().format(DateTimeFormatter.ISO_DATE);
// String → LocalDate(Time)
LocalDateTime.parse("2018-12-11 13:43:21.221",
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
LocalDate.parse("2018-12-11");
// 요일
// 현재 기준 가장 가까운 다음 토요일
LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
// 입력한 월의 3번째 토요일
LocalDate.of(2022, 12, 10).with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.SATURDAY));
// 입력한 월의 첫 번째 토요일
LocalDate.of(2022, 12, 10).with(TemporalAdjusters.firstInMonth(DayOfWeek.SATURDAY));
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!