LHJ

I'm a FE developer.

19-2. Date 오브젝트 / 프로퍼티 리스트, Date 인스턴스 생성, Date 오브젝트 함수 분류

07 Dec 2020 » js_beginner

19-2. Date 오브젝트 / 프로퍼티 리스트, Date 인스턴스 생성, Date 오브젝트 함수 분류

프로퍼티 리스트

이름개요
new Date()인스턴스 생성
Date 함수
Date()현재시각 반환
Date.parse()문자열 값을 밀리초로 변환
Date.UTC()UTC 기준 밀리초로 변환
Date.now()현재 시각을 밀리초로 반환
Date.prototype / 이 아래부턴 메소드(인스턴스 통해 호출)
constructor생성자
toString()일자와 시간을 변환해서 문자열로 반환
toUTCString()UTC 일자와 시간 반환
toISOString()
International Standard Organization (국제 표준기구)
"ISO 8601 확장 형식의 간소화 버전" 형태로 일자와 시간 반환
toDateString()연월일과 요일을 사람이 읽기 쉬운 형태로 반환
toTimeString()시분초와 타임존을 사람이 읽기 쉬운 형태로 반환
toLocaleString()
Locale이 들어간 메소드는 브라우저에 의존적인 것이 많다. (주의)
일자와 시간을 지역 언어로 반환
toLocaleDateString()
Locale이 들어간 메소드는 브라우저에 의존적인 것이 많다. (주의)
연월일을 지역 언어로 반환
toLocaleTimeString()
Locale이 들어간 메소드는 브라우저에 의존적인 것이 많다. (주의)
시분초와 오전/오후를 지역 언어로 반환
toJSON()JSON.stringify()와 연동하여 JSON 형태의 일자, 시간 설정

이름개요이름개요
Date.prototype / 이 아래는 전부 메소드(인스턴스 통해 호출)
getTime()시간값 반환valueOf()프리미티브 시간값 반환
getFullYear()4자리 연도 반환getYear()세기 구분과 연도 2자리 반환
getFullYear() 사용 권장
getMonth()월 반환getDate()일 반환
getDay()요일 반환getHours()시 반환
getMinutes()분 반환getTimezoneOffset()UTC와 지역 시간 차이를 분으로 반환
getSeconds()초 반환getMilliseconds()밀리초 반환
getUTCFullYear()UTC 연도 반환getUTCMonth()UTC 월 반환
getUTCDate()UTC 일 반환getUTCDay()UTC 요일 반환
getUTCHours()UTC 시 반환getUTCMinutes()UTC 분 반환
getUTCSeconds()UTC 초 반환getUTCMilliseconds()UTC 밀리초 반환

getYear() : 1970 ~ 1999 이 시절엔 하드디스크가 굉장히 비쌌습니다.
그래서 이 당시엔 년도의 뒤에 숫자 2자리만 저장했었습니다.
1997년이면 97만 저장했었습니다.

그런데 2000년도 되니깐 문제가 생겼습니다.
2000년이면 00으로 저장되기 때문에 1900과 똑같아 보이기 때문입니다.
그래서 2000년도 들어오고나서 부터는 getFullYear() 메소드로 4자리를 모두 사용하게 되었습니다.


이름개요이름개요
Date.prototype
setFullYear()연도 변경. 월, 일 변경 가능setYear()두 자리로 연도 변경.
setFullYear() 사용 권장
setMonth()월 변경. 일 변경 가능setDate()일 변경
setHours()시 변경setMinutes()분 변경. 초, 밀리초 변경 가능
setSeconds()초 변경. 밀리초 변경 가능setMilliseconds()밀리초 변경
setTime()1970년 1월 1일부터 경과한 밀리초 변경setUTCFullYear()UTC 연도 변경. 월, 일 변경 가능
setUTCMonth()UTC 월 변경. 일 변경 가능setUTCDate()UTC 일 변경
setUTCHours()UTC 시 변경setUTCMinutes()UTC 기준 분 변경. 초, 밀리초 변경 가능
setUTCSeconds()UTC 초 변경. 밀리초 변경 가능setUTCMilliseconds()UTC 밀리초 변경

new Date()

구분데이터(값)
파라미터년, 월[, 일[, 시[, 분[, 초[, 밀리초]]]]]
년, 월만 필수고 나머지는 선택입니다. 대괄호 안에 작성되어있다는 것이 선택이라는 뜻
반환생성한 Date 인스턴스

  • Date 인스턴스 생성

    • 파라미터 값을 인스턴스의 프리미티브 값으로 설정

        var obj = new Date(2019, 02); // 3월
        console.log(obj); // Fri Mar 01 2019 00:00:00 GMT+0900 (대한민국 표준시)
      
      1. 값을 작성하지 않으면 0으로 간주

  • 파라미터를 작성하지 않으면

    • UTC 기준 현재 시간

        console.log(new Date()); // Mon Dec 07 2020 10:11:00 GMT+0900 (대한민국 표준시)
      

  • 파라미터를 문자열로 작성하면

    • “2019-12-15T09:11:23.123”
    • 밀리초로 변환

        console.log(new Date("2019-02")); // Fri Feb 01 2019 09:00:00 GMT+0900 (대한민국 표준시)
      
      1. 문자열 작성의 차이
      2. new Date(2019, 02)에서는 02가 3월로 변환되지만
        new Date(“2019-02”)는 2월로 변환됩니다.

  • 시간 자동 넘김

      console.log(new Date(2019, 11, 34)); // Fri Jan 03 2020 00:00:00 GMT+0900 (대한민국 표준시)
    
    1. 월일 시분초 범위를 넘치면 상위 시간값에 반영됩니다.
      단, 문자열로 작성하면 에러가 납니다.
    2. new Date(2019, 11, 34)에서
    3. 34가 31을 넘치므로
      3을 남겨두고 11에 1을 더합니다.
    4. 12는 13월이므로
      1을 남겨두고 2019에 1을 더합니다.
    5. 그래서 2020.01.03이 출력되었습니다.

    위의 방식은 calender 프로그램에서 많이 쓰이는 방식입니다.
    달력 프로그램을 만들 때, 윤년, 윤달을 신경써야되잖아요?
    어떤달은 작고(30일), 어떤달은 크고(31일)를 다 신경쓰려면 피곤하죠?
    에러날 확률도 높습니다.

    예시) 1월 1일부터 3개월간의 달력을 만들겠다.

      console.log(new Date(2020, 00, 99)); // Wed Apr 08 2020 00:00:00 GMT+0900 (대한민국 표준시)
    

Date.now()

구분데이터(값)
objectDate 오브젝트
파라미터사용하지 않음
반환밀리초

  • 현재 시간을 밀리초로 반환

      console.log(Date.now()); // 1607304374779
      console.log(new Date()); // Mon Dec 07 2020 10:26:14 GMT+0900 (대한민국 표준시)
    
    1. 값을 작성하지 않으면 0으로 간주
    2. Date.now()와 new Date()가 같은 시간값이지만 값 표시가 다릅니다.

Date.parse()

구분데이터(값)
objectDate 오브젝트
파라미터년월일, 시분초, 밀리초
반환밀리초

  • 문자열 값을 밀리초로 변환

    • 1970-01-01부터 경과한 시간

        console.log(Date.parse("2019-01-23T09:11:23.123")); // 1548202283123
      

정리 : Date 오브젝트 함수 분류

  • 시간을 반환하는 함수

    • getMonth(), getDate() 등

        var obj = new Date(2019, 02, 15);
        console.log(obj.getMonth()); // 2
        console.log(obj.getDate()); // 15
      

  • 시간을 설정하는 함수

    • setMonth(), setDate() 등

        var obj = new Date();
        console.log(obj.valueOf()); // 1607304678625
        console.log(obj.setMonth(01)); // 1581039078625
        console.log(obj.setDate(15)); // 1581730278625
      

  • 함수 이름으로 기능을 알 수 있으므로 설명 생략
  • 주의 사항

    • 클라이언트의 시간은 사용자가 변경 가능
    • 마감 시간처럼 시간이 중요할 때는 서버 시간 사용