Date
Date 생성자는 시간의 특정 지점을 나타내는 Date 객체를 생성한다.
Date객체는 1970년 1월 1일 UTC(국제표준시) 00:00으로부터 지난 시간을 밀리초로 나타내는 유닉스 타임스탬프를 사용한다.
아래와 같이 다양하게 Date객체를 생성하고 날짜를 지정할 수 있다.
new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
var today = new Date();
var birthday = new Date(95,11,17);
var birthday = new Date("December 17, 1995 03:24:00");
var birthday = new Date(95,11,17,3,24,0);
year
연도를 나타내는 정숫값. 0부터 99는 1900부터 1999로 처리. 예제 참고.
monthIndex
월을 나타내는 정숫값. 0은 1월을 나타내고 11은 12월을 나타냄.
day [Optional]
일을 나타내는 정숫값. 기본값은 1.
hours [Optional]
시를 나타내는 정숫값. 기본값은 0(자정).
minutes [Optional]
분을 나타내는 정숫값. 기본값은 0분.
seconds [Optional]
초를 나타내는 정숫값. 기본값은 0초.
milliseconds [Optional]
밀리초를 나타내는 정숫값. 기본값은 0밀리초.
new Date() / Date() / +new Date() 비교
const date1 = new Date('December 17, 1995 03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...
const date2 = new Date('1995-12-17T03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...
console.log(date1 === date2);
// expected output: false;
console.log(date1 - date2);
// expected output: 0
const date3 = Date('December 17, 1995 03:24:00');
// Tue Apr 20 2021 17:24:07 GMT+0900 (GMT+09:00)
// Date() 안에 어떤 값을 넣어도 현재 시각을 반환
const date4 = Date('1995-12-17T03:24:00');
// Tue Apr 20 2021 17:24:07 GMT+0900 (GMT+09:00)
console.log(date3 === date4);
// expected output: true;
console.log(date3 - date4);
// expected output: NaN;
const date5 = +new Date('December 17, 1995 03:24:00');
// 819138240000
const date6 = +new Date('1995-12-17T03:24:00');
// 819138240000
console.log(date5 === date6);
// expected output: true;
console.log(date5 - date6);
// expected output: 0
Date()
Date()를 사용하면 JavaScript Date 객체는 JavaScript Date를 생성자로 호출하여 인스턴스화 할 수 있다.
일반 함수로 호출하면 (즉, new 연산자없이) Date 객체가 아닌 현재 시각의 문자열이 반환된다.
그렇기에, Date() 끼리 연산하게 되면 NaN(Not A Number) 숫자가 아니라고 나온다.
new Date()
생성자 대신 new Date()를 사용하면 각 인스턴스는 고유하다.
동일한 생성자의 두 인스턴스는 서로 다른 객체이기 때문에 똑같은 속성을 가지고 있더라도 여전히 서로 다르다.
두 개의 다른 객체 참조를 비교 하고 있기 때문에 false를 반환하고
- - 연산을 하면 두 객체의 millisecond의 차이를 출력한다.
- + 연산을 하면 두 객체의 String 값을 이어서 출력한다.
+new Date()
+ 연산자는 개체를 숫자로 변환하는 역할을 한다.
숫자로 변환하기 위해서 자바스크립트는 .valueOf() 메소드를 호출하게 되고
Date 객체의 .valueOf 메소드는 .getTime() 과 동일한 일을 하기 때문에 + 기호를 붙이는 것 만으로
현재 시간을 millisecond 로 가져올 수 있다.
References
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date
stackoverflow.com/questions/41980177/why-is-new-date-new-date-false-but-date-date-is-true
'FRONTEND > Javascript' 카테고리의 다른 글
[Javascript] Array 중복 값 제거(Remove Array Duplicates) (0) | 2021.04.22 |
---|---|
[Javascript] Array.sort() 정리 (0) | 2021.04.22 |
[Javascript] String.split() 정리 (0) | 2021.04.22 |
[Javascript] Array.join() / Array.fill() / Array.map() (0) | 2021.04.21 |
[Javascript] CONST, LET, VAR 차이 / SCOPE (0) | 2021.04.09 |
댓글