국비지원교육 Day14

두윤기·2023년 1월 16일
0
post-custom-banner

시간 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 8+

> 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

> SimpleDateFormat

  • 사용법
  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 get(int field)
  int year = c.get(Calendar.YEAR);
  int month = c.get(Calendar.MONTH);
  int day = c.get(Calendar.DATE);
  // int day = c.get(Calendar.DAY_OF_MONTH);
  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

Format

  • SimpleDateFormat
  • DateTimeFormatter
  • DecimalFormat

> java.time

LocalDate

  • constructor
  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

  • setSeed
    + hashCode()

Scanner

Closeable
AutoCloseable try catch resource

  • Constructor

  • method

    • sc.next()
    • sc.hasNext()
  • next와 nextLine을 섞어쓸 때

    • next는 입력을 받을 때 (?buffer)에 처음 delimiter가 있다면 제거하고 다음 delimiter가 나올 때까지 입력받고 종료
    • nextLine은 입력 받을 때, 우선 입력을 받고 delimiter가 나오면 제거하면서 종료
    • 따라서 next로 입력을 받고 nextLine method를 사용하려면, (?buffer에 )남아있는 \n를 nextLine으로 제거하고, 한번 더 사용하여 입력받아야 함

> Arrays

  • sort
    + Generic
profile
programmerD
post-custom-banner

0개의 댓글