ë ì§ë¥¼ ì ì¥í ì ìê³ , ë ì§ì ê´ë ¨ë ë©ìëë ì ê³µí´ì£¼ë ë´ì¥ ê°ì²´ Dateì ëí´ ììë´ ìë¤(ì´ ê¸ìì ì¼ì(ë ì§/ìê°)를 ë ì§ì í¼ì©í´ì ì¬ì©íê² ìµëë¤ â ì®ê¸´ì´).
Date ê°ì²´ë¥¼ íì©íë©´ ìì± ë° ìì ìê°ì ì ì¥íê±°ë ìê°ì 측ì í ì ìê³ , íì¬ ë ì§ë¥¼ ì¶ë ¥íë ì©ë ë±ì¼ë¡ë íì©í ì ììµëë¤.
ê°ì²´ ìì±í기
new Date()를 í¸ì¶íë©´ ìë¡ì´ Date ê°ì²´ê° ë§ë¤ì´ì§ëë°, new Date()ë ë¤ìê³¼ ê°ì ííë¡ í¸ì¶í ì ììµëë¤.
new Date()-
ì¸ì ìì´ í¸ì¶íë©´ íì¬ ë ì§ì ìê°ì´ ì ì¥ë
Dateê°ì²´ê° ë°íë©ëë¤.let now = new Date(); alert( now ); // íì¬ ë ì§ ë° ìê°ì´ ì¶ë ¥ë¨ new Date(milliseconds)-
UTC 기ì¤(UTC+0) 1970ë 1ì 1ì¼ 0ì 0ë¶ 0ì´ìì
millisecondsë°ë¦¬ì´(1/1000 ì´) íì ìì ì´ ì ì¥ëDateê°ì²´ê° ë°íë©ëë¤.// 1970ë 1ì 1ì¼ 0ì 0ë¶ 0ì´(UTC+0)를 ëíë´ë ê°ì²´ let Jan01_1970 = new Date(0); alert( Jan01_1970 ); // 1970ë 1ì 1ì¼ì 24ìê° íë 1970ë 1ì 2ì¼(UTC+0)ì let Jan02_1970 = new Date(24 * 3600 * 1000); alert( Jan02_1970 );1970ë ì 첫ë ì 기ì¤ì¼ë¡ íë¬ê° ë°ë¦¬ì´ë¥¼ ëíë´ë ì ìë íìì¤í¬í(timestamp) ë¼ê³ ë¶ë¦ ëë¤.
íìì¤í¬í를 ì¬ì©íë©´ ë ì§ë¥¼ ì«ì ííë¡ ê°í¸íê² ëíë¼ ì ììµëë¤.
new Date(timestamp)를 ì¬ì©í´ íìì¤í¬í를 ì¬ì©í´ í¹ì ë ì§ê° ì ì¥ëDateê°ì²´ë¥¼ ìì½ê² ë§ë¤ ì ìê³date.getTime()ë©ìë를 ì¬ì©í´Dateê°ì²´ìì íìì¤í¬í를 ì¶ì¶íë ê²ë ê°ë¥í©ëë¤(ìì¸í ì¬íì ìëìì ë¤ë£¨ëë¡ íê² ìµëë¤).1970ë 1ì 1ì¼ ì´ì ë ì§ì í´ë¹íë íìì¤í¬í ê°ì ììì ëë¤. ìì를 ì´í´ë´ ìë¤.
// 31 Dec 1969 let Dec31_1969 = new Date(-24 * 3600 * 1000); alert( Dec31_1969 ); new Date(datestring)-
ì¸ìê° íëì¸ë°, 문ìì´ì´ë¼ë©´ í´ë¹ 문ìì´ì ìëì¼ë¡ 구문 ë¶ì(parsed)ë©ëë¤. 구문 ë¶ìì ì ì©ëë ìê³ ë¦¬ì¦ì
Date.parseìì ì¬ì©íë ìê³ ë¦¬ì¦ê³¼ ëì¼íë°, ìì¸í ë´ì©ì ìëìì ë¤ë£¨ëë¡ íê² ìµëë¤.let date = new Date("2017-01-26"); alert(date); // ì¸ìë¡ ìê°ì ì§ì íì§ ìì기 ë문ì GMT ìì ì´ë¼ê³ ê°ì íê³ // ì½ëê° ì¤íëë ìê°ë(timezone)ì ë°ë¼ ì¶ë ¥ 문ìì´ì´ ë°ëëë¤. // ë°ë¼ì ì¼ë¿ ì°½ì // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time) // í¹ì // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)ë±ì´ ì¶ë ¥ë©ëë¤. new Date(year, month, date, hours, minutes, seconds, ms)-
주ì´ì§ ì¸ì를 ì¡°í©í´ ë§ë¤ ì ìë ë ì§ê° ì ì¥ë ê°ì²´ê° ë°íë©ëë¤(ì§ì ìê°ë 기ì¤). 첫 ë²ì§¸ì ë ë²ì§¸ ì¸ìë§ íìê°ì ëë¤.
yearë ë°ëì ë¤ ì리 ì«ìì¬ì¼ í©ëë¤.2013ì ê´ì°®ê³98ì ê´ì°®ì§ ììµëë¤.monthë0(1ì)ë¶í°11(12ì) ì¬ì´ì ì«ìì¬ì¼ í©ëë¤.dateë ì¼ì ëíë´ëë°, ê°ì´ ìë ê²½ì°ì 1ì¼ë¡ ì²ë¦¬ë©ëë¤.hours/minutes/seconds/msì ê°ì´ ìë ê²½ì°ì0ì¼ë¡ ì²ë¦¬ë©ëë¤.
ìì:
new Date(2011, 0, 1, 0, 0, 0, 0); // 2011ë 1ì 1ì¼, 00ì 00ë¶ 00ì´ new Date(2011, 0, 1); // hours를 ë¹ë¡¯í ì¸ìë 기본ê°ì´ 0ì´ë¯ë¡ ìì ëì¼ìµì ì ë°ëë 1ë°ë¦¬ì´(1/1000ì´)ì ëë¤.
let date = new Date(2011, 0, 1, 2, 3, 4, 567); alert( date ); // 2011ë 1ì 1ì¼, 02ì 03ë¶ 04.567ì´
ë ì§ êµ¬ì±ìì ì»ê¸°
Date ê°ì²´ì ë©ìë를 ì¬ì©íë©´ ì°, ì, ì¼ ë±ì ê°ì ì»ì ì ììµëë¤.
- getFullYear()
- ì°ë(ë¤ ì릿ì)를 ë°íí©ëë¤.
- getMonth()
- ìì ë°íí©ëë¤(0 ì´ì 11 ì´í).
- getDate()
- ì¼ì ë°íí©ëë¤(1 ì´ì 31 ì´í). ì´! ê·¸ë°ë° ë©ìë ì´ë¦ì´ ëê° ì´ìíë¤ì.
- getHours(), getMinutes(), getSeconds(), getMilliseconds()
- ì, ë¶, ì´, ë°ë¦¬ì´ë¥¼ ë°íí©ëë¤.
getYear()ë§ê³ getFullYear()를 ì¬ì©íì¸ì.ì¬ë¬ ìë°ì¤í¬ë¦½í¸ ìì§ì´ ëë ì¬ì©ëì§ ìë(deprecated) ë¹íì¤ ë©ìë getYear()ì 구ííê³ ììµëë¤. ì´ ë©ìëë ë ì릿ì ì°ë를 ë°ííë ê²½ì°ê° ì기 ë문ì ì ë ì¬ì©í´ì ì ë©ëë¤. ì°ë ì 보를 ì»ê³ ì¶ë¤ë©´ getFullYear()를 ì¬ì©íì¸ì.
ì´ ì¸ìë ìì¼ì ë°íí´ì£¼ë ë©ìëë ììµëë¤.
- getDay()
- ì¼ìì¼ì ëíë´ë
0ë¶í° í ìì¼ì ëíë´ë6ê¹ì§ì ì«ì ì¤ íë를 ë°íí©ëë¤. ëªëª ëë¼ìì ìì¼ì 첫ë ì´ ì¼ìì¼ì´ ìë긴 íì§ë§, getDayìì íì0ì´ ì¼ìì¼ì ëíë ëë¤. ì´ë¥¼ ë³ê²½í ë°©ë²ì ììµëë¤.
ììì ìê°í´ë린 ë©ìë 모ëë íì§ ìê° ê¸°ì¤ ë ì§ êµ¬ì±ìì를 ë°íí©ëë¤.
ì ë©ìë ì´ë¦ì ìë âgetâ ë¤ìì 'UTCâ를 ë¶ì¬ì£¼ë©´ íì¤ì(UTC+0) 기ì¤ì ë ì§ êµ¬ì± ìì를 ë°íí´ì£¼ë ë©ìë getUTCFullYear(), getUTCMonth(), getUTCDay()를 ë§ë¤ ì ììµëë¤.
íì§ ìê°ëê° UTC ìê°ëì ë¤ë¥´ë¤ë©´ ìë ìì를 ì¤ííì ë ì¼ë¿ì°½ì ë¤ë¥¸ ê°ì´ ì¶ë ¥ë©ëë¤.
// íì¬ ì¼ì
let date = new Date();
// íì§ ìê° ê¸°ì¤ ì
alert( date.getHours() );
// íì¤ìê°ë(UTC+0, ì¼ê´ ì ì½ ìê°ì 를 ì ì©íì§ ìì ë°ë ìê°) ê¸°ì¤ ì
alert( date.getUTCHours() );
ìë ë ë©ìëë ììì ìê°í ë©ìëì ë¬ë¦¬ íì¤ì(UTC+0) 기ì¤ì ë ì§ êµ¬ì± ìì를 ë°íí´ì£¼ë ë©ìëê° ììµëë¤.
- getTime()
-
주ì´ì§ ì¼ìì 1970ë 1ì 1ì¼ 00ì 00ë¶ 00ì´ ì¬ì´ì ê°ê²©(ë°ë¦¬ì´ ë¨ì)ì¸ íìì¤í¬í를 ë°íí©ëë¤.
- getTimezoneOffset()
-
íì§ ìê°ê³¼ íì¤ ìê°ì ì°¨ì´(ë¶)를 ë°íí©ëë¤.
// UTC-1 ìê°ëìì ì´ ìì를 ì¤ííë©´ 60ì´ ì¶ë ¥ë©ëë¤. // UTC+3 ìê°ëìì ì´ ìì를 ì¤ííë©´ -180ì´ ì¶ë ¥ë©ëë¤. alert( new Date().getTimezoneOffset() );
ë ì§ êµ¬ì±ìì ì¤ì í기
ìë ë©ìë를 ì¬ì©íë©´ ë ì§ êµ¬ì±ìì를 ì¤ì í ì ììµëë¤.
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)(1970ë 1ì 1ì¼ 00:00:00 UTCë¶í° ë°ë¦¬ì´ ì´í를 ëíë´ë ë ì§ë¥¼ ì¤ì )
setTime()ì ì ì¸í 모ë ë©ìëë setUTCHours()ê°ì´ íì¤ìì ë°ë¼ ë ì§ êµ¬ì± ìì를 ì¤ì í´ì£¼ë ë©ìëê° ììµëë¤.
setHoursì ê°ì ë©ìëë ì¬ë¬ ê°ì ë ì§ êµ¬ì±ìì를 ëìì ì¤ì í ì ìëë°, ë©ìëì ì¸ìì ìë 구ì±ììë ë³ê²½ëì§ ììµëë¤.
ìì:
let today = new Date();
today.setHours(0);
alert(today); // ë ì§ë ë³ê²½ëì§ ìê³ ìë§ 0ì¼ë¡ ë³ê²½ë©ëë¤.
today.setHours(0, 0, 0, 0);
alert(today); // ë ì§ë ë³ê²½ëì§ ìê³ ì, ë¶, ì´ê° 모ë ë³ê²½ë©ëë¤(00ì 00ë¶ 00ì´).
ìë ê³ ì¹¨
Date ê°ì²´ì ìë ê³ ì¹¨(autocorrection) ì´ë¼ë ì ì©í 기ë¥ì´ ììµëë¤. ë²ì를 ë²ì´ëë ê°ì ì¤ì íë ¤ê³ íë©´ ìë ê³ ì¹¨ 기ë¥ì´ íì±íëë©´ì ê°ì´ ìëì¼ë¡ ìì ë©ëë¤.
ìì:
let date = new Date(2013, 0, 32); // 2013ë
1ì 32ì¼ì ììµëë¤.
alert(date); // 2013ë
2ì 1ì¼ì´ ì¶ë ¥ë©ëë¤.
ì ë ¥ë°ì ë ì§ êµ¬ì± ììê° ë²ì를 ë²ì´ëë©´ ì´ê³¼ë¶ì ìëì¼ë¡ ë¤ë¥¸ ë ì§ êµ¬ì±ììì ë°°ë¶ë©ëë¤.
'2016ë
2ì 28ì¼âì ì´í ë¤ ë ì§ë¥¼ 구íê³ ì¶ë¤ê³ ê°ì í´ë´
ìë¤. ëµì 3ì 2ì¼ í¹ì 3ì 1ì¼(ì¤ë
)ì´ ë í
ë°, 2016ë
ì´ ì¤ë
ì¸ì§ ìëì§ ìê°í íì ìì´ ë¨ìí ì´íì ëí´ì£¼ê¸°ë§ íë©´ ëµì 구í ì ììµëë¤. ëë¨¸ì§ ìì
ì Date ê°ì²´ê° ììì ì²ë¦¬í´ 주기 ë문ì´ì£ .
let date = new Date(2016, 1, 28);
date.setDate(date.getDate() + 2);
alert( date ); // 2016ë
3ì 1ì¼
ìë ê³ ì¹¨ì ì¼ì ìê°ì´ ì§ë íì ë ì§ë¥¼ 구íëë°ë ì¢ ì¢ ì¬ì©ë©ëë¤. 'ì§ê¸ë¶í° 70ì´ íâì ë ì§ë¥¼ 구í´ë´ ìë¤.
let date = new Date();
date.setSeconds(date.getSeconds() + 70);
alert( date ); // 70ì´ íì ë ì§ê° ì¶ë ¥ë©ëë¤.
0ì´ë ìì를 ë ì§ êµ¬ì±ììì ì¤ì íë ê²ë ê°ë¥í©ëë¤. ìì를 ì´í´ë´ ìë¤.
let date = new Date(2016, 0, 2); // 2016ë
1ì 2ì¼
date.setDate(1); // 1ì¼ë¡ ë³ê²½í©ëë¤.
alert( date ); // 01 Jan 2016
date.setDate(0); // ì¼ì ìµìê°ì 1ì´ë¯ë¡ 0ì ì
ë ¥íë©´ ì ë¬ì ë§ì§ë§ ë ì ì¤ì í ê²ê³¼ ê°ì í¨ê³¼ë¥¼ ë´
ëë¤.
alert( date ); // 31 Dec 2015
Date ê°ì²´ë¥¼ ì«ìë¡ ë³ê²½í´ ìê°ì°¨ 측ì í기
Date ê°ì²´ë¥¼ ì«ìíì¼ë¡ ë³ê²½íë©´ íìì¤í¬í(date.getTime()ì í¸ì¶ ì ë°íëë ê°)ê° ë©ëë¤.
let date = new Date();
alert(+date); // íìì¤í¬í(date.getTime()를 í¸ì¶í ê²ê³¼ ëì¼í¨)
ì´ë¥¼ ìì©íë©´ ë ì§ì ë§ì´ëì¤ ì°ì°ì를 ì ì©í´ ë°ë¦¬ì´ ê¸°ì¤ ì차를 구í ì ììµëë¤.
ì차를 측ì í´ ëë§ì ì¤í±ìì¹ë¥¼ ë§ë¤ì´ë´ ìë¤.
let start = new Date(); // 측ì ìì
// ìíë ìì
ì ìí
for (let i = 0; i < 100000; i++) {
let doSomething = i * i * i;
}
let end = new Date(); // 측ì ì¢
ë£
alert( `ë°ë³µë¬¸ì 모ë ëëë° ${end - start} ë°ë¦¬ì´ê° ê±¸ë ¸ìµëë¤.` );
Date.now()
Date ê°ì²´ë¥¼ ë§ë¤ì§ ìê³ ë ì차를 측ì í ë°©ë²ì´ ììµëë¤.
íì¬ íìì¤í¬í를 ë°ííë ë©ìë Date.now()를 ìì©íë©´ ë©ëë¤.
Date.now()ë new Date().getTime()ê³¼ ìë¯¸ë¡ ì ì¼ë¡ ëì¼íì§ë§ ì¤ê°ì Date ê°ì²´ë¥¼ ë§ë¤ì§ ìëë¤ë ì ì´ ë¤ë¦
ëë¤. ë°ë¼ì new Date().getTime()를 ì¬ì©íë ê²ë³´ë¤ ë¹ ë¥´ê³ ê°ë¹ì§ 컬ë í°ì ì¼ì ëì´ì¤ë¤ë ì¥ì ì´ ììµëë¤.
ìë°ì¤í¬ë¦½í¸ë¥¼ ì¬ì©í´ ê²ìì 구ííë¤ëê° ì 문ë¶ì¼ì ì í리ì¼ì´ì
ì 구íí ëì ê°ì´ ì±ë¥ì´ ì¤ìí ê²½ì°ì Date.now()ê° ì주 íì©ë©ëë¤. ë¬¼ë¡ í¸ì를 ìí´ íì©ë기ë íì£ .
ì ìì를 Date.now()를 ì¬ì©í´ ë³ê²½íë©´ ì±ë¥ì´ ë ì¢ìµëë¤.
let start = Date.now(); // 1970ë
1ì 1ì¼ë¶í° íì¬ê¹ì§ì ë°ë¦¬ì´
// ìíë ìì
ì ìí
for (let i = 0; i < 100000; i++) {
let doSomething = i * i * i;
}
let end = Date.now(); // done
alert( `ë°ë³µë¬¸ì 모ë ëëë° ${end - start} ë°ë¦¬ì´ê° ê±¸ë ¸ìµëë¤.` ); // Date ê°ì²´ê° ìë ì«ìë¼ë¦¬ ì°¨ê°í¨
벤ì¹ë§í¬ í ì¤í¸
'벤ì¹ë§í¬ í ì¤í¸âë ë¹êµ ëìì ëê³ ì±ë¥ì ë¹êµíì¬ ìííê³ íê°í ë ì°ì ëë¤.
CPU를 ë§ì´ ì¡ì먹ë í¨ìì ì 뢰í ë§í 벤ì¹ë§í¬(íê° ê¸°ì¤)를 구íë ¤ë©´ ìë¹í 주ìê° íìí©ëë¤.
ë ë ì§ì ì°¨ì´ë¥¼ ê³ì°í´ì£¼ë í¨ì ë ê°ê° ìëë°, ì´ë í¨ìì ì±ë¥ì´ ë ì¢ìì§ ììë´ì¼ íë¤ê³ ê°ì í´ë´ ìë¤.
// ë í¨ì ì¤ date1ê³¼ date2ì ì°¨ì´ë¥¼ ì´ë¤ í¨ìê° ë 빨리 ë°íí ê¹ì?
function diffSubtract(date1, date2) {
return date2 - date1;
}
// ë°í ê°ì ë°ë¦¬ì´ì
ëë¤.
function diffGetTime(date1, date2) {
return date2.getTime() - date1.getTime();
}
ë í¨ìë ìì í ëì¼í ìì
ì ìííì§ë§, í í¨ìë ë ì§ë¥¼ ë°ë¦¬ì´ ë¨ìë¡ ì»ê¸° ìí´ date.getTime()를 ì¬ì©íê³ ìê³ , ë¤ë¥¸ í¨ìë ë§ì´ëì¤ ì°ì°ì ì ì© ì ê°ì²´ê° ì«ìíì¼ë¡ ë³ííë¤ë í¹ì§ì ì¬ì©íê³ ììµëë¤. ë í¨ìê° ë°ííë ê°ì íì ëì¼íì£ .
ìëë ì´ë¨ê¹ì?
ì°ìí´ì í¨ì를 ì주 ë§ì´ í¸ì¶í í, ì¤ì ì°ì°ì´ ì¢
ë£ëë ë° ê±¸ë¦¬ë ìê°ì ë¹êµíë©´ ë í¨ìì ì±ë¥ì ë¹êµí ì ìì ê²ëë¤. diffSubtractì diffGetTimeë ì주 ê°ë¨í í¨ìì´ê¸° ë문ì ì ì미í ì차를 구íë ¤ë©´ ê° í¨ì를 ìµìí ìë§ ë² í¸ì¶í´ì¼ í©ëë¤.
측ì ì ììí´ë´ ìë¤.
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( 'diffSubtract를 ìë§ë² í¸ì¶íëë° ê±¸ë¦° ìê°: ' + bench(diffSubtract) + 'ms' );
alert( 'diffGetTimeì ìë§ë² í¸ì¶íëë° ê±¸ë¦° ìê°: ' + bench(diffGetTime) + 'ms' );
í ë³íì´ ìì´ì ìì§ ìµì íì ëë ììì´ ì¤ì´ë¤ë¯ë¡ getTime()ì ì´ì©í ë°©ë²ì´ í¨ì¬ ë¹ ë¦
ëë¤.
ì, 벤ì¹ë§í¬ë¡ ì¸ ëê°ë¥¼ 구í긴 íìµëë¤. ê·¸ë°ë° ì´ ë²¤ì¹ë§í¬ë ê·¸ë¤ì§ ì¢ì 벤ì¹ë§í¬ê° ìëëë¤.
bench(diffSubtract)를 ì¤ííê³ ìì ë CPUê° ì´ë¤ ìì
ì ë³ë ¬ì ì¼ë¡ ì²ë¦¬íê³ ìê³ , ì¬ê¸°ì CPUì ììì´ í¬ì
ëê³ ììë¤ê³ ê°ì í´ ë´
ìë¤. ê·¸ë¦¬ê³ bench(diffGetTime)ì ì¤íí ë, ì´ ìì
ì´ ëë ìíë¼ê³ ê°ì í´ ë´
ìë¤.
ë©í° íë¡ì¸ì¤ë¥¼ ì§ìíë ì´ìì²´ì ìì ì´ë° ìë리ì¤ë íí ë°ìí©ëë¤.
첫 ë²ì§¸ benchmarkê° ì¤íë ë ì¬ì©í ì ìë CPU ììì´ ì ì기 ë문ì ì´ ë²¤ì¹ë§í¬ë ì¢ì§ ììµëë¤.
ì¢ ë ì 뢰í ë§í 벤ì¹ë§í¬ í
ì¤í¸ë¥¼ ë§ë¤ë ¤ë©´ benchmark를 ë²ê°ì ê°ë©´ì ì¬ë¬ ë² ëë ¤ì¼ í©ëë¤.
ìëì ê°ì´ ë§ì´ì£ .
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;
}
let time1 = 0;
let time2 = 0;
// í¨ì bench를 ê° í¨ì(diffSubtract, diffGetTime)ë³ë¡ 10ë²ì© ë립ëë¤.
for (let i = 0; i < 10; i++) {
time1 += bench(diffSubtract);
time2 += bench(diffGetTime);
}
alert( 'diffSubtractì ì모ë ìê°: ' + time1 );
alert( 'diffGetTimeì ì모ë ìê°: ' + time2 );
모ë ìë°ì¤í¬ë¦½í¸ ìì§ì ì주 ë§ì´ ì¤íë ì½ëì¸ 'hot codeâ를 ëìì¼ë¡ ìµì í를 ìíí©ëë¤(ì¤í íìê° ì ì ì½ëë ìµì íí íìê° ìì£ ). ì ìììì bench를 첫 ë²ì§¸ ì¤ííì ëë ìµì íê° ì ì ì©ëì§ ì기 ë문ì ìë ì½ëì²ë¼ ë©ì¸ ë°ë³µë¬¸ì ì¤íí기 ì ì ìì´ì©(heat-up)ì¼ë¡ bench를 ì¤íí ì ììµëë¤.
// ë©ì¸ ë°ë³µë¬¸ ì¤í ì , "ìì´ì©"ì¼ë¡ ì¶ê°í ì½ë
bench(diffSubtract);
bench(diffGetTime);
// 벤ì¹ë§í¬ í
ì¤í¸ ìì
for (let i = 0; i < 10; i++) {
time1 += bench(diffSubtract);
time2 += bench(diffGetTime);
}
모ë ìë°ì¤í¬ë¦½í¸ ìì§ì ìµì í를 ë§ì´ í©ëë¤. ì´ë¡ ì¸í´ 'ë§ë¤ì´ì§ í ì¤í¸âê° 'ì¤ì ì¬ë¡âìë ê²°ê³¼ê° ë¤ë¥¼ ì ììµëë¤. í¹í ì°ì°ì, ë´ì¥ í¨ìì ê°ì´ ì주 ìì ê²ì¼ìë¡ ë ê²°ê³¼ê° ë¤ë¥¼ ì ììµëë¤. ê·¸ë¬ë ì§ì§íê² ì±ë¥ì ì´í´íê³ ì¶ë¤ë©´ ìë°ì¤í¬ë¦½í¸ ìì§ì´ ì´ë»ê² ëìíëì§ ê³µë¶íì길 ë°ëëë¤. ê·¸ë¬ë©´ ìë§ ì¸ë°í 벤ì¹ë§í¹ì í íìê° ìì ê²ëë¤.
http://mrale.phìì V8 ìì§ì ì¤ëª í ì¢ì ê¸ë¤ì ë³´ì¤ ì ììµëë¤.
Date.parseì 문ìì´
ë©ìë Date.parse(str)를 ì¬ì©íë©´ 문ìì´ìì ë ì§ë¥¼ ì½ì´ì¬ ì ììµëë¤.
ë¨, 문ìì´ì íìì YYYY-MM-DDTHH:mm:ss.sssZì²ë¼ ìê²¨ì¼ í©ëë¤.
YYYY-MM-DDâ ë ì§(ì°-ì-ì¼)"T"â êµ¬ë¶ ê¸°í¸ë¡ ì°ìHH:mm:ss.sssâ ì:ë¶:ì´.ë°ë¦¬ì´'Z'(ìµì ) â+-hh:mmíìì ìê°ë를 ëíë.Zí ê¸ìì¸ ê²½ì°ì UTC+0ì ëíë
YYYY-MM-DD, YYYY-MM, YYYYê°ì´ ë ì§§ì 문ìì´ íìë ê°ë¥í©ëë¤.
ì ì¡°ê±´ì ë§ì¡±íë 문ìì´ì ëìì¼ë¡ Date.parse(str)를 í¸ì¶íë©´ 문ìì´ê³¼ ëìíë ë ì§ì íìì¤í¬íê° ë°íë©ëë¤. 문ìì´ì íìì´ ì¡°ê±´ì ë§ì§ ìì ê²½ì°ì NaNì´ ë°íë©ëë¤.
ìì:
let ms = Date.parse('2012-01-26T13:51:50.417-07:00');
alert(ms); // 1327611110417 (íìì¤í¬í)
Date.parse(str)를 ì´ì©íë©´ íìì¤í¬íë§ì¼ë¡ë ìë¡ì´ Date ê°ì²´ë¥¼ ë°ë¡ ë§ë¤ ì ììµëë¤.
let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );
alert(date);
ìì½
- ìë°ì¤í¬ë¦½í¸ìì Date ê°ì²´ë¥¼ ì¬ì©í´ ë ì§ì ìê°ì ëíë
ëë¤.
Dateê°ì²´ì âë ì§ë§â í¹ì âìê°ë§â ì ì¥íë ê²ì ë¶ê°ë¥íê³ , íì ë ì§ì ìê°ì´ í¨ê» ì ì¥ë©ëë¤. - ìì 0ë¶í° ììí©ëë¤(0ì 1ìì ëíë ëë¤).
- ìì¼ì
getDay()를 ì¬ì©íë©´ ì»ì ì ìëë°, ìì¼ ìì 0ë¶í° ììí©ëë¤(0ì ì¼ìì¼ì ëíë ëë¤). - ë²ì를 ëì´ê°ë 구ì±ìì를 ì¤ì íë ¤ í ë
Dateìë ê³ ì¹¨ì´ íì±íë©ëë¤. ì´ë¥¼ ì´ì©íë©´ ì/ì¼/ìê°ì ì½ê² ë ì§ì ì¶ê°íê±°ë ëº ì ììµëë¤. - ë ì§ë¼ë¦¬ ë¹¼ë ê²ë ê°ë¥íë°, ì´ë ë ë ì§ì ë°ë¦¬ì´ ì°¨ì´ê° ë°íë©ëë¤. ì´ê² ê°ë¥í ì´ì ë
Dateê° ì«ìíì¼ë¡ ë°ë ë íìì¤í¬íê° ë°íë기 ë문ì ëë¤. Date.now()를 ì¬ì©íë©´ íì¬ ìê°ì íìì¤í¬í를 ë¹ ë¥´ê² êµ¬í ì ììµëë¤.
ìë°ì¤í¬ë¦½í¸ì íìì¤í¬íë ì´ê° ìë ë°ë¦¬ì´ 기ì¤ì´ë¼ë ì ì íì ì ìíì기 ë°ëëë¤.
ê°í¹ ë°ë¦¬ì´ë³´ë¤ ë ì íí ìê° ì¸¡ì ì´ íìí ëê° ììµëë¤. ìë°ì¤í¬ë¦½í¸ë ë§ì´í¬ë¡ì´(1/1,000,000ì´)를 ì§ìíì§ ìì§ë§ ëë¤ìì í¸ì¤í¸ íê²½ì ë§ì´í¬ë¡ì´ë¥¼ ì§ìí©ëë¤. ë¸ë¼ì°ì íê²½ì ë©ìë performance.now()ë íì´ì§ ë¡ë©ì 걸리ë ë°ë¦¬ì´ë¥¼ ë°íí´ì£¼ëë°, ë°íëë ì«ìë ììì ìë ì¸ ì리ê¹ì§ ì§ìí©ëë¤.
alert(`íì´ì§ ë¡ë©ì´ ${performance.now()}ë°ë¦¬ì´ ì ì ììëììµëë¤.`);
// ì¼ë¿ ì°½ì "íì´ì§ ë¡ë©ì´ 34731.26000000001ë°ë¦¬ì´ ì ì ììëììµëë¤."ì ì ì¬í ë©ìì§ê° ë° í
ë°
// ì¬ê¸°ì '.26'ì ë§ì´í¬ë¡ì´(260ë§ì´í¬ë¡ì´)를 ëíë
ëë¤.
// ììì ìë ì«ì ì¸ ê° ì´íì ì«ìë ì ë°ë ìë¬ë문ì ë³´ì´ë ì«ìì´ë¯ë¡ ììì ìë ì«ì ì¸ ê°ë§ ì í¨í©ëë¤.
Node.jsìì microtime 모ë ë±ì ì¬ì©í´ ë§ì´í¬ë¡ì´ë¥¼ ì¬ì©í ì ììµëë¤. ìë°ì¤í¬ë¦½í¸ê° 구ëëë ëë¤ìì í¸ì¤í¸ í경과 기기ìì ë§ì´í¬ë¡ì´ë¥¼ ì§ìíê³ ìëë° Date ê°ì²´ë§ ë§ì´í¬ë¡ì´ë¥¼ ì§ìíì§ ììµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.