ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Section 6. 자바스크립트 Date 객체
    자바스크립트 2023. 3. 31. 11:34

    Date 객체는 날짜와 시간 관련 기능들을 제공하는 빌트인 객체이다. 

     

    I. 생성자 함수

    1. 현재 날짜와 시간

    const now = new Date();
    
    console.log(typeof now); //object
    console.log(now); //Fri Mar 31 2023 11:11:02 GMT+0900 (한국 표준시)
    const nowStr = Date()
    
    console.log(typeof nowStr); //string
    console.log(nowStr); //Fri Mar 31 2023 11:11:13 GMT+0900 (한국 표준시)

    현재 날짜와 시간이 출력되는 것을 알 수 있다.

    두개의 출력문을 보면 특징은 다음과 같다.

    • new와 함께 사용하면 인스턴스 객체가 된다.
    • new 없이 사용하면 문자열을 반환한다. - new Date().toString() 과 같다.

    2. 밀리초 기준

    1970년 1월 1일 자정(UTC, 그리니치 평균시)으로부터 인자로 주어진 밀리초만큼 경과한 시간이다.

    여기서 자정은 해당 일 0시 0분 0초를 의미한다.

    console.log(
      new Date(0)
    ); //Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시)
    
    console.log(
      new Date(1000 * 60 * 60 * 24 * 365 * 30)
    ); //Sat Dec 25 1999 09:00:00 GMT+0900 (한국 표준시)

     

    3. 단위별 숫자 입력

    연, 월 (0부터 시작) 은 필수이다.

    일, 시, 분, 초, 밀리초는 옵션이다. 그리고 없을 시에는 0이다.

    console.log(
      new Date(2022, 8)
    ); //Thu Sep 01 2022 00:00:00 GMT+0900 (한국 표준시)
    
    console.log(
      new Date(2022, 8, 20, 14, 35)
    ); //Tue Sep 20 2022 14:35:00 GMT+0900 (한국 표준시)
    
    console.log(
      new Date(2022, 8, 20, 14, 35, 47, 789)
    ); //Tue Sep 20 2022 14:35:47 GMT+0900 (한국 표준시)

     

    4. dateString

    특정 형식의 문자열을 인식 가능하다. 

    *하지만 동작이 일관적이지 못하고, 브라우저마다 차이가 존재해서 권장하지 않는다.

     

    console.log(
      new Date('August 20, 2022 14:35:47')
    ); //Sat Aug 20 2022 14:35:47 GMT+0900 (한국 표준시)
    
    console.log(
      new Date('2022-08-20T14:35:47')
    ); //Sat Aug 20 2022 14:35:47 GMT+0900 (한국 표준시)

     

    II. 정적 메서드

    1. now

    연재의 밀리초 숫자값 (앞으로 UTC 1970/1/1 자정부터 경과값을 의미) 반환하는 메서드이다.

    console.log(Date.now()); //1680229292824

     

    2. parse, UTC

    주어진 시간의 밀리초 숫자값을 반환하는 메서드이다.

    parse는 dateString, UTC는 단위별 숫자를 받는다.

    console.log(
      Date.parse('August 20, 2022 00:00:00 UTC')
    ); //1660953600000
    console.log(
      // 💡 시스템(실행 컴퓨터) 시간이 한국이면 시차 9시간 적용
      Date.parse('August 20, 2022 09:00:00')
    ); //1660953600000
    console.log(
      // ⭐️ 월은 0부터 시작
      Date.UTC(2022, 7, 20, 0, 0, 0)
    ); //1660953600000

     

    III. 인스턴스 메서드

    1. toString, toDateString, toTimeString

    각각 전체, 날짜만, 시간만 나타내는 문자열을 출력하는 메서드이다. 

    시스템(컴퓨터)의 언어 설정별로 다르게 나타난다.

     

    const now = new Date();
    
    console.log(
      now.toString()
    ); //Fri Mar 31 2023 11:24:25 GMT+0900 (한국 표준시)
    
    console.log(
      now.toDateString()
    ); //Fri Mar 31 2023
    
    console.log(
      now.toTimeString()
    ); //11:24:25 GMT+0900 (한국 표준시)

     

    2. toLocaleString

    주어진 언어 코드를 기준으로 표현한 문자열을 반환하는 메서드이다.

    인자가 없을 시 시스템의 언어를 적용한다.

    const now = new Date();
    
    console.log(
      now.toString()
    ); //Fri Mar 31 2023 11:25:49 GMT+0900 (한국 표준시)
    
    console.log(
      now.toLocaleString()
    ); //2023. 3. 31. 오전 11:25:49
    
    console.log(
      now.toLocaleString('ko-KR')
    ); //2023. 3. 31. 오전 11:25:49
    
    console.log(
      now.toLocaleString('de-DE')
    ); //31.3.2023, 11:25:49

     

    3. 단위별 setter, getter 메서드들

    const now = new Date();
    console.log(now.toString()); //Fri Mar 31 2023 11:26:51 GMT+0900 (한국 표준시)
    
    for (i of [
      [ '연:', now.getFullYear() ],
      [ '월:', now.getMonth() ], // 0 ~ 11
      [ '일:', now.getDate() ],
      [ '요일:', now.getDay() ], // 0부터 일월화수목금토 
      [ '시:', now.getHours() ],
      [ '분:', now.getMinutes() ],
      [ '초:', now.getSeconds() ],
      [ '밀리초:', now.getMilliseconds() ]
    ]) {
      console.log(i[0], i[1]);
    }

    출력문은 다음과 같다.

    const now = new Date();
    console.log(now.toString()); //Fri Mar 31 2023 11:29:11 GMT+0900 (한국 표준시)
    
    now.setFullYear(2022);
    now.setMonth(7);
    now.setDate(20);
    // 💡 요일은 setter가 없음
    now.setHours(14);
    now.setMinutes(35);
    now.setSeconds(47);
    now.setMilliseconds(789);
    
    console.log(now.toString()); //Sat Aug 20 2022 14:35:47 GMT+0900 (한국 표준시)

    이것을 활용하는 예시는 다음과 같다.

    const now = new Date();
    
    const year = now.getFullYear();
    const month = now.getMonth() + 1;
    const date = now.getDate();
    const day = '일월화수목금토'[now.getDay()];
    
    console.log(
      `오늘은 ${year}년 ${month}월 ${date}일, ${day}요일입니다.`
    );
    //오늘은 2023년 3월 31일, 금요일입니다.

     

    4. getTime, setTime

    밀리초 숫자값을 set하고 get하는 메서드이다. 

    const date1 = new Date(2020, 7, 20);
    const date1value = date1.getTime();
    
    console.log(date1.toString()); //Thu Aug 20 2020 00:00:00 GMT+0900 (한국 표준시)
    console.log(date1value); //1597849200000
    const date2 = new Date();
    
    console.log(date2.toString()); //Fri Mar 31 2023 11:31:44 GMT+0900 (한국 표준시)
    
    date2.setTime(date1value);
    
    console.log(date2.toString()); //Thu Aug 20 2020 00:00:00 GMT+0900 (한국 표준시)

     

    5. getTimezoneOffset

     시스템의 시간대와 UTC의 시간차를 분 단위로 반환하는 메서드이다.

    한국의 경우 9시간 차이가 있다.

    console.log(
      new Date().getTimezoneOffset() / 60
    ); //-9

     

    6. toISOString

    ISO 8061이란 형식의 문자열을 반환하는 메서드이다.

    UTC 기준으로 반환한다.

    const now = new Date();
    
    // 시간차 존재
    console.log(
      now.toISOString()
    ); //2023-03-31T02:33:58.705Z
    
    console.log(
      now.toString()
    ); //Fri Mar 31 2023 11:33:58 GMT+0900 (한국 표준시)

    현재시각으로 맞추면 다음과 같다.

    const now = new Date();
    const timezoneOffset = now.getTimezoneOffset() * 60000;
    
    const isoStr = new Date(now.getTime() - timezoneOffset).toISOString();
    
    console.log(isoStr); //2023-03-31T11:34:32.791Z
    console.log(now.toString()); //Fri Mar 31 2023 11:34:32 GMT+0900 (한국 표준시)

     

Designed by Tistory.