티스토리 뷰
5.11 Date and time
new Date()로 생성한다. 1970년부터 ms 단위로 시간이 표현된다. 자바랑 큰 차이 없는 것으로 보인다.
Access date components
- getFullYear()
- getMonth()
- getDate()
- getHours(), getMinutes(), getSeconds(), getMilliseconds()
- getDat()
모두 local time zone 기준으로 반환됨.
Setting date componets
- setFullYear(year, [month], [date])
- setMonth(month, [date])
- setDate(date)
- setHours(hour, [min], [sec], [ms])
- setMinutes(min, [sec], [ms])
- setSeconds(sec, [ms])
- setMilliseconds(ms)
- setTime(milliseconds) (sets the whole date by milliseconds since 01.01.1970 UTC)
Autocorrection
Date 타입으로 연산을 하거나 올바르지 않은 값이 들어오더라도 날짜를 계산하여 올바르게 자동으로 바꾼다. 자바랑 큰 차이는 없는 것으로 보인다.
let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
alert(date); // ...is 1st Feb 2013!
// -------------
let date = new Date(2016, 1,28);
date.setDate(date.getDate() + 2);
alert( date ); // 1 Mar 2016
Benchmarking
Date 타입은 벤치마킹에 활용하기에도 좋다. 아래 예시는 같은 결과를 반환하지만 성능에서 차이를 보인다.
// we have date1 and date2, which function faster returns their difference in ms?
function diffSubtract(date1, date2) {
return date2 - date1;
}
// or
function diffGetTime(date1, date2) {
return date2.getTime() - date1.getTime();
}
getTime()의 경우 타입 변환이 없기 때문에, 더욱더 빠르다. 물론 벤치마킹은 여러 번 진행해 보면서 평균값을 기준으로 판단하는 것이 좋을 것이다.
function diffSubtract(date1, date2) {
return date2 - date1;
}
function diffGetTime(date1, date2) {
return date2.getTime() - date1.getTime();
}
function bench(f) {
let date1 = new Date(0);
let date2 = new Date();
let start = Date.now();
for (let i = 0; i < 100000; i++) f(date1, date2);
return Date.now() - start;
}
alert( 'Time of diffSubtract: ' + bench(diffSubtract) + 'ms' );
alert( 'Time of diffGetTime: ' + bench(diffGetTime) + 'ms' );
'스터디 > JavaScript' 카테고리의 다른 글
모던 자바스크립트 튜토리얼 part1 - 9.1 (0) | 2024.05.23 |
---|---|
모던 자바스크립트 튜토리얼 part1 - 5.12 (0) | 2024.05.21 |
모던 자바스크립트 튜토리얼 part1 - 5.10 (0) | 2024.05.21 |
모던 자바스크립트 튜토리얼 part1 - 5.9 (0) | 2024.05.21 |
모던 자바스크립트 튜토리얼 part1 - 5.7 ~ 8 (0) | 2024.05.21 |
댓글