[JAVA] Api (Date / Time)

Gabriela·2023년 7월 31일
0

JAVA

목록 보기
17/24
post-thumbnail

날짜와 시간


Timestamp(타임스탬프)

  • 현재 시간을 long 타입의 값으로 가지고 있는데 그걸 타임스탬프라고 한다.
  • 1970년 1월 1일 0시부터 1/1000초마다 1씩 증가하고 있는 값이다.
시간 단위
 
second > ㎳     > ㎲         > ㎱             > ㎰
         밀리초   마이크로초   나노초           피코초
         1/1,000  1/1,000,000  1/1,000,000,000  1/1,000,000,000,000
         currentTimeMillis()   nanoTime()
  • 나노초 : 어떤 작업 수행시간을 정밀하게 계산할 때 사용하는 시간

• 타임스탬프 활용 예제

  public static void ex01() {
   
    long timstamp = System.currentTimeMillis();
    System.out.println(timstamp);
    // System.out.println(Long.MAX_VALUE);
  }
  public static void ex02() {
   
    String s1 = "";
    StringBuilder s2 = new StringBuilder();
   
    long start = System.nanoTime();
   
    for(char ch = 'A'; ch <= 'Z'; ch++) {
      // s1 += ch;   // 86800㎱ (String의 + 연산자)
      s2.append(ch); // 8200㎱  (StringBuilder의 append 메소드)
    }
   
    long end = System.nanoTime();
   
    System.out.println("수행시간: " + (end - start) + "㎱");
  }

• java.util.Date

  public static void main(String[] args) {
   
    // 현재 날짜와 시간
    Date date1 = new Date();
    System.out.println(date1);
   
    // 타임스탬프 값에 해당하는 날짜와 시간
    Date date2 = new Date(24 * 60 * 60 * 1000); // 1일이 지난 타임스템프
    System.out.println(date2);
  }

• java.sql.Date

  public static void main(String[] args) {
   
    // java.sql.Date 클래스
    // DB의 DATE 타입을 처리하는 Date 클래스
   
    // 현재 날짜
    Date date = new Date(System.currentTimeMillis()); 
    System.out.println(date);
   
    // java.sql.Timestamp
    // DB의 TIMESTAMP 타입을 처리하는 Timestamp 클래스
    Timestamp timestamp = new Timestamp(System.currentTimeMillis());  // 현재 날짜
    System.out.println(timestamp);
  }

SimpleDateFormat

  • 날짜, 시간 형식을 지정할 수 있는 클래스이다.
  • 원하는 형식을 패턴(Pattern)으로 전달할 수 있다.
  • 패턴
    • yy : 년도 2자리
    • yyyy : 년도 4자리
    • M : 월 1자리(1~12)
    • MM : 월 2자리(01~12)
    • MMM : 문자열(1월~12월)
    • d : 일 1자리(1~31)
    • dd : 일 2자리(01~31)
    • E : 요일(일~토)
    • a : 오전/오후(오전, 오후)
    • h : 12시각 1자리(1~12)
    • hh : 12시각 2자리(01~12)
    • H : 24시각 1자리(0~23)
    • HH : 24시각 2자리(00~23)
    • m : 분 1자리(0~59)
    • mm : 분 2자리(00~59)
    • s : 초 1자리(0~59)
    • ss : 초 2자리(00~59)

• java.text.SimpleDateFormat 클래스

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
String strDate = sdf.format(date);
System.out.println(strDate);

Calendar

  • 특정 날짜를 생성할 수 있다.
  • 날짜의 구성요소(년, 월, 일, ...)를 쉽게 가져다 사용할 수 있다.

• java.util.Calendar 클래스

  public static void ex01() {
   
    // 현재 날짜와 시간
    Calendar calendar = Calendar.getInstance();
   
    // 구성요소 가져오기
    int year = calendar.get(Calendar.YEAR);          // Calendar.Year == 1 이므로 int year = calendar.get(1)과 같다.
    int month = calendar.get(Calendar.MONTH) + 1;    // 월(0~11) : 주의가 필요하다.
    int day = calendar.get(Calendar.DAY_OF_MONTH);   // 일(1~31)
    int weekNo = calendar.get(Calendar.DAY_OF_WEEK); // 일(1), 월(2), ... 토(7)
    int ampm = calendar.get(Calendar.AM_PM);         // 오전(0), 오후(1)
    int hour12 = calendar.get(Calendar.HOUR);        // 12시각(1~12)
    int hour24 = calendar.get(Calendar.HOUR_OF_DAY); // 24시각(0~23)
    int minute = calendar.get(Calendar.MINUTE);      // 분(0~59)
    int second = calendar.get(Calendar.SECOND);      // 초(0~59)
   
    System.out.println(year);
    System.out.println(month);
    System.out.println(day);
    System.out.println(weekNo);
    System.out.println(ampm);
    System.out.println(hour12);
    System.out.println(hour24);
    System.out.println(minute);
    System.out.println(second);
  }
  public static void ex02() {
   
    // 현재 날짜와 시간
    Calendar calendar = Calendar.getInstance();
   
    // 특정 날짜로 변경
    // 년도만 2022로 수정
    calendar.set(Calendar.YEAR, 2022);        
   
    // 특정 기간 이후/이전으로 변경
    // 1개월 후
    calendar.add(Calendar.MONTH, 1);  
    // 1일 전
    calendar.add(Calendar.DAY_OF_MONTH, -1);  
   
    // Calendar를 이용해서 타임스탬프 알아내기
    long timestamp = calendar.getTimeInMillis();
    System.out.println(timestamp);
   
    // Calendar를 이용해서 Date 알아내기
    Date date = calendar.getTime();
    System.out.println(date);
  }

• LocalDateTime

  • JDK 1.8 이후
    • 날짜 : java.time.LocalDate
    • 시간 : java.time.LocalTime
    • 둘다 : java.time.LocalDateTime

  public static void ex01() {
   
    // 현재 날짜
    LocalDate date1 = LocalDate.now();
    System.out.println(date1);
   
    // 특정 날짜
    LocalDate date2 = LocalDate.of(2023, 7, 31);  // 2023년 7월 31일
    System.out.println(date2);
   
    // 문자열 날짜 처리
    LocalDate date3 = LocalDate.parse("2023-07-31");  // 기본 패턴 : yyyy-MM-dd
    System.out.println(date3);
  }
  public static void ex02() {
   
    // 현재 시간
    LocalTime time1 = LocalTime.now();
    System.out.println(time1);
   
    // 특정 시간
    LocalTime time2 = LocalTime.of(15, 25, 30);   // 15시 25분 30초
    System.out.println(time2);
   
    // 문자열 시간 처리
    LocalTime time3 = LocalTime.parse("14:25:30");  // 기본 패턴 HH:mm:ss
    System.out.println(time3);
  }
  public static void ex03() {
   
    // 현재 날짜와 시간
    LocalDateTime dateTime1 = LocalDateTime.now();
    System.out.println(dateTime1);
   
    // 특정 날짜와 시간
    LocalDateTime dateTime2 = LocalDateTime.of(2023, 7, 31, 15, 25, 30);
    System.out.println(dateTime2);
   
    // 문자열 형식의 날짜와 시간
    LocalDateTime dateTime3 = LocalDateTime.parse("2023-07-31T15:28:30");   // 작성 형식: "날짜T시간"
    System.out.println(dateTime3);
  }
  // 원하는 패턴(형식) 지정해서 표기
  public static void ex04() {
   
    // 패턴 지정하기
    LocalDateTime dateTime = LocalDateTime.now();
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 E요일 a hh시 mm분 ss초");
    String strDateTime = dtf.format(dateTime);
    System.out.println(strDateTime);
  }
  public static void ex05() {
   
    // 날짜/시간 구성요소 가져오기
   
    LocalDateTime dateTime = LocalDateTime.now();
  
    int year = dateTime.getYear();          // 년
    int month = dateTime.getMonthValue();   // 월(1~12)
    int day = dateTime.getDayOfMonth();     // 일
    int hour = dateTime.getHour();          // 시(0~23)
    int minute = dateTime.getMinute();      // 분
    int second = dateTime.getSecond();      // 초
   
    System.out.println(year);
    System.out.println(month);
    System.out.println(day);
    System.out.println(hour);
    System.out.println(minute);
    System.out.println(second);
  }

profile
개발이 세상에서 제일 재밌어요

0개의 댓글

관련 채용 정보