ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 자바스크립트 Date 객체 이해하기 - 1
    프로그래밍 이야기/JavaScript 공부 2020. 6. 17. 00:05

    자바스크립트에서 날짜와 시간과 관련된 부분을 다룰 때는 Date 객체를 유용하게 활용할 수 있다.

     

    Date 객체 만드는 법

    객체를 만드는 방법은 총 4가지가 있는데 하나씩 살펴보자.

     

    1. 파라미터로 아무 값도 전달하지 않는 경우

    // new Date()
    const date = new Date();

    Date 객체는 new 연산자를 통해서 새로운 객체를 만들어 주어야 한다.

    이렇게 Date 객체를 생성할 때, 소괄호 안에 아무런 값도 전달해주지 않으면, 현재시간으로 객체가 생성된다.

     

     

    2. 파라미터로 숫자 값을 전달하는 경우

    // new Date(milliseconds)
    const date = new Date(1000);
    
    console.log(date); // Thu Jan 01 1970 09:00:01 GMT+0900

    Date 객체를 생성할 때 숫자 값을 전달할 경우, 1970년 1월 1일 00:00:00 (UTC)를 기준으로 전달된 수치만큼의 밀리초가 흐른 객체가 생성된다.

    위 코드와 같이 1000을 전달해줄 경우 1970년 1월 1일 자정에서 1초가 지난 시간에, 한국 시간대가 더해져 1970년 1월 1일 9시 1초가 출력이 되는 모습을 확인할 수가 있다. 

     

     

    3. 파라미터로 문자열을 전달하는 경우

    Date 객체를 생성할 때 날짜로 해석이 가능한 문자열인 경우에는 해당 날짜로 생성할 수가 있다.

    특정한 날짜로 Date 객체를 생성하고자 한다면, 앞의 숫자 값을 밀리 초로 전달하는 방식보다는 이 방식이 훨씬 더 간편하다.

    하지만 주의해야될 점은 아무렇게나 작성한다고 다 날짜가 되는 것이 아니다.

    const date = new Date('2019년 11월 16일');
    
    console.log(date); // Invalid Date

    이런 식으로 아무리 날짜스러운 문자열을 넣는다고 한들 다 허용되는 것이 아니라

    IETF 호환 RFC 2822 타임스탬프 ISO8601의 한 버전의 형식을 갖춰야 한다.

    // new Date(YYYY-MM-DDThh:mm:ss.ssZ)
    const date1 = new Date('2019-11-16');
    const date2 = new Date('2019-11-16T23:56:59');
    const date3 = new Date('2019/11/16');
    const date4 = new Date('2019/11/16 23:56:59');
    const date5 = new Date('2019 11 16');
    const date6 = new Date('2019 11 16 23:56:59');
    const date7 = new Date('2019 Nov 16');
    const date8 = new Date('Nov 2019 16');
    const date9 = new Date('Nov 16 2019');

    나름대로 다양한 방법으로 작성할 수 있긴 하지만, 위 코드의 코멘트 처리해둔 YYYY-MM-DDTHH:MM:SS.SSZ방식을 따르는 것이 가장 안정적인 것 같다.

    여기서 끝의 .SS 밀리초를 나타내고 Z부분이 조금 독특한데, Z는 타임존을 다룰 때 활용한다.

    const date1 = new Date('2019-11-16T23:56:59-10:00');
    const date2 = new Date('2019-11-16T23:56:59+09:00');
    
    console.log(date1); // Sun Nov 17 2019 18:56:59 GMT+0900
    console.log(date2); // Sat Nov 16 2019 23:56:59 GMT+0900

    이렇게 + 혹은 - HH:MM 으로 작성하면 UTC+0을 기준으로 + 혹은 - 된 시간으로 Date객체가 생성된다.

     

     

    4. 여러 개의 값을 파라미터로 전달하는 경우

    문자열의 형태로 날짜를 작성하는 게 헷갈리고 번거롭다면 숫자 값 여러 개를 파라미터로 전달하는 방법도 있다.

    // new Date(year, month, date, hours, minutes, seconds, ms)
    const date1 = new Date(2019, 10, 16, 23, 56, 59);
    const date2 = new Date(2019, 10, 16, 23, 56);
    const date3 = new Date(2019, 10, 16, 23);
    const date4 = new Date(2019, 10, 16);
    const date5 = new Date(2019, 10);
    
    console.log(date1); // Sat Nov 16 2019 23:56:59 GMT+0900
    console.log(date2); // Sat Nov 16 2019 23:56:00 GMT+0900
    console.log(date3); // Sat Nov 16 2019 23:00:00 GMT+0900
    console.log(date4); // Sat Nov 16 2019 00:00:00 GMT+0900
    console.log(date5); // Fri Nov 01 2019 00:00:00 GMT+0900

    year, month, date, hours, minutes, seconeds, ms 순서로 작성할 수 있고, 앞의 year와 month는 생략할 수 없고 나머지는 생략할 경우 초기값은 date부터 순서대로 1, 00, 00, 00, 00 이 된다.

    댓글

Designed by BigTop.