시간 API
- java.util.Date
- 21세기 전(~1999) 날짜 표현
- ex) (19)YY-MM-DD
(19)95-03-02
- millennium bug(밀레니엄 버그)
- 월의 범위가 0~11임
- java.util.Calendar
- java.time.LocalDate, LocalTime
> java.util.Date
+ Deprecated: 사용되지 않음
+ import할 때 동음이의어 class 주의
(ex) java.sql.Date, java.util.Date
Constructor
year(parameter)에 받은 값 + 1900을 year로 설정
Date d = new Date();
Date d2 = new Date(95, 2, 4);
Date d3 = new Date(95, 3, 4, 12, 30, 30);
Date d4 = new Date(System.currentTimeMillis());
Method
- 일, 시간, 분, 초 등 시간 정보를 추출하는 method가 있지만 Calendar로 replaced
- long getTime(): returns the number of milliseconds since Epoch time(POSIX time)
- void setTime(long time): Sets this Date object to represent a point in time that is time milliseconds after Epoch time
Format f1 = new SimpleDateFormat("yyyy년 M년 dd일 E");
SimpleDateFormat f2 = new SimpleDateFormat();
f2.applyPattern("yyyy년 M년 dd일 E")
주요 Letter
- y(연도), M(월), d(일)
- E(요일) a(오전, 오후)
- H(0-23), h(1-12), k(1-24), K(0-11)
- m(분), s(초), S(MilliSecond)
Method
- StinrgBuffer .format(Date date)
date를 instance format에 맞춰 String 생성
- Date .parse(String text)
text의 date, time이 제 자리면, 숫자를 다 채우지 않아도, 요일이 잘못적혀 있어도 올바른 Date로 변환. 단, a(오전, 오후)를 명시하지 않으면 error!
- String .toPattern()
pattern을 string으로 보여줌
> Calendar
Abstract class that
- provides fields(int YEAR, MONTH, DAY_OF_MONTH, HOUR, ...)
- manipulates the calendar fields
단점
- 시간과 날짜가 분리 X
- 월이 0~11로 관리, 실제 설정/추출 시 보정
Constructor
Calendar c = Calendar.getInstance();
Field
- JANUARY, FEBRUARY, MARCH, ..., DECEMBER
- MONDAY, TUESDAY, ..., SUNDAY
- DATE
- DAY_OF_WEEK
- HOUR, MINUTE, SECOND
- time
Method
- void add(int field, int amount)
c.add(Calendar.DATE, -100)
- void set(int field, int value), void set(int year, int month, int day)
c.set(2023, 0, 16);
c.set(Calendar.DATE, 30);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DATE);
int day = c.get(Calendar.DATE);
- int getActualMaximum(int field)
- Date .getTime()
Date d = c.getTime();
- void .setTime(Date date)
- long .getTimeInMillis()
- void .setTimeInMillis(long millis)
> Locale
> java.text
- SimpleDateFormat
- DateTimeFormatter
- DecimalFormat
> java.time
LocalDate
LocalDate date1 = LocalDate.now();
LocalDate date2 = LocalDate.of(2023, 1, 16);
LocalDate date3 = LocalDate.parse("2023-06-13");
- method
- getYear(), getMonthValue(), getDayOfMonth(), getDayOfWeek()
LocalDateTime
LocalTime
> 시간차이
java.time.Duration
java.time.Period
java.time.ChronoUnit
입력, random API
Random
Scanner
Closeable
AutoCloseable try catch resource
-
Constructor
-
method
-
next와 nextLine을 섞어쓸 때
- next는 입력을 받을 때 (?buffer)에 처음 delimiter가 있다면 제거하고 다음 delimiter가 나올 때까지 입력받고 종료
- nextLine은 입력 받을 때, 우선 입력을 받고 delimiter가 나오면 제거하면서 종료
- 따라서 next로 입력을 받고 nextLine method를 사용하려면, (?buffer에 )남아있는 \n를 nextLine으로 제거하고, 한번 더 사용하여 입력받아야 함
> Arrays