让æä»¬æ¥å¦ä¹ ä¸ä¸ªæ°çå å»ºå¯¹è±¡ï¼æ¥æï¼Dateï¼ã该对象å卿¥æåæ¶é´ï¼å¹¶æä¾äºæ¥æ/æ¶é´çç®¡çæ¹æ³ã
æä»¬å¯ä»¥ä½¿ç¨å®æ¥åå¨å建/ä¿®æ¹æ¶é´ï¼æµéæ¶é´ï¼æè ä» ç¨æ¥æå°å½åæ¶é´ã
å建
è°ç¨ new Date() æ¥å建ä¸ä¸ªæ°ç Date 对象ãå¨è°ç¨æ¶å¯ä»¥å¸¦æä¸äºåæ°ï¼å¦ä¸æç¤ºï¼
new Date()-
ä¸å¸¦åæ° ââ å建ä¸ä¸ªè¡¨ç¤ºå½åæ¥æåæ¶é´ç
Date对象ï¼let now = new Date(); alert( now ); // æ¾ç¤ºå½åçæ¥æ/æ¶é´ new Date(milliseconds)-
å建ä¸ä¸ª
Date对象ï¼å ¶æ¶é´çäº 1970 å¹´ 1 æ 1 æ¥ UTC+0 ä¹åç»è¿çæ¯«ç§æ°ï¼1/1000 ç§ï¼ã// 0 表示 01.01.1970 UTC+0 let Jan01_1970 = new Date(0); alert( Jan01_1970 ); // ç°å¨å¢å 24 å°æ¶ï¼å¾å° 02.01.1970 UTC+0 let Jan02_1970 = new Date(24 * 3600 * 1000); alert( Jan02_1970 );ä¼ å ¥çæ´æ°åæ°ä»£è¡¨çæ¯èª 1970-01-01 00:00:00 以æ¥ç»è¿çæ¯«ç§æ°ï¼è¯¥æ´æ°è¢«ç§°ä¸º æ¶é´æ³ã
è¿æ¯ä¸ç§æ¥æçè½»é级æ°å表示形å¼ãæä»¬é常使ç¨
new Date(timestamp)éè¿æ¶é´æ³æ¥åå»ºæ¥æï¼å¹¶å¯ä»¥ä½¿ç¨date.getTime()å°ç°æçDate对象转å为æ¶é´æ³ï¼ä¸æä¼è®²å°ï¼ãå¨ 01.01.1970 ä¹åçæ¥æå¸¦æè´çæ¶é´æ³ï¼ä¾å¦ï¼
// 31 Dec 1969 let Dec31_1969 = new Date(-24 * 3600 * 1000); alert( Dec31_1969 ); new Date(datestring)-
å¦æåªæä¸ä¸ªåæ°ï¼å¹¶ä¸æ¯å符串ï¼é£ä¹å®ä¼è¢«èªå¨è§£æãè¯¥ç®æ³ä¸
Date.parseæä½¿ç¨çç®æ³ç¸åï¼å°å¨ä¸æä¸è¿è¡ä»ç»ãlet date = new Date("2017-01-26"); alert(date); // æªæå®å ·ä½æ¶é´ï¼æä»¥å宿¶é´ä¸ºæ ¼æå°¼æ²»æ åæ¶é´ï¼GMTï¼çåå¤é¶ç¹ // å¹¶æ ¹æ®è¿è¡ä»£ç æ¶çç¨æ·çæ¶åºè¿è¡è°æ´ // å æ¤ï¼ç»æå¯è½æ¯ // 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åºè¯¥æ¯å使°ã为äºå ¼å®¹æ§ï¼ä¹æ¥å 2 使°ï¼å¹¶å°å ¶è§ä¸º19xxï¼ä¾å¦98ä¸1998ç¸åï¼ä½å¼ºç建议å§ç»ä½¿ç¨ 4 使°ãmonth计æ°ä»0ï¼ä¸æï¼å¼å§ï¼å°11ï¼åäºæï¼ç»æãdateæ¯å½æçå ·ä½æä¸å¤©ï¼å¦æç¼ºå¤±ï¼å为é»è®¤å¼1ã- 妿
hours/minutes/seconds/ms缺失ï¼åå为é»è®¤å¼0ã
ä¾å¦ï¼
new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00 new Date(2011, 0, 1); // åæ ·ï¼æ¶åç§çå为é»è®¤å¼ 0æ¶é´åº¦éæå¤§ç²¾ç¡®å° 1 毫ç§ï¼1/1000 ç§ï¼ï¼
let date = new Date(2011, 0, 1, 2, 3, 4, 567); alert( date ); // 1.01.2011, 02:03:04.567
è®¿é®æ¥æç»ä»¶
ä» Date 对象ä¸è®¿é®å¹´ãæçä¿¡æ¯æå¤ç§æ¹å¼ï¼
- getFullYear()
- è·å年份ï¼4 使°ï¼
- getMonth()
- è·åæä»½ï¼ä» 0 å° 11ã
- getDate()
- è·å彿çå ·ä½æ¥æï¼ä» 1 å° 31ï¼è¿ä¸ªæ¹æ³åç§°å¯è½çèµ·æ¥æäºä»¤äººçæã
- getHours()ï¼getMinutes()ï¼getSeconds()ï¼getMilliseconds()
- è·åç¸åºçæ¶é´ç»ä»¶ã
getYear()ï¼èæ¯ getFullYear()å¾å¤ JavaScript 弿é½å®ç°äºä¸ä¸ªéæ ååçæ¹æ³ getYear()ã䏿¨è使ç¨è¿ä¸ªæ¹æ³ã宿æ¶åå¯è½ä¼è¿å 2 ä½ç年份信æ¯ãæ°¸è¿ä¸è¦ä½¿ç¨å®ãè¦è·åå¹´ä»½å°±ä½¿ç¨ getFullYear()ã
å¦å¤ï¼æä»¬è¿å¯ä»¥è·åä¸å¨ä¸ç第å 天ï¼
- getDay()
- è·åä¸å¨ä¸ç第å 天ï¼ä»
0ï¼æææ¥ï¼å°6ï¼ææå ï¼ã第ä¸å¤©å§ç»æ¯æææ¥ï¼å¨æäºå½å®¶å¯è½ä¸æ¯è¿æ ·çä¹ æ¯ï¼ä½æ¯è¿ä¸è½è¢«æ¹åã
以ä¸çæææ¹æ³è¿åçç»ä»¶é½æ¯åºäºå½å°æ¶åºçã
å½ç¶ï¼ä¹æä¸å½å°æ¶åºç UTC 对åºé¡¹ï¼å®ä»¬ä¼è¿ååºäº UTC+0 æ¶åºçæ¥ãæãå¹´çï¼getUTCFullYear()ï¼getUTCMonth()ï¼getUTCDay()ãåªéè¦å¨ "get" ä¹åæå
¥ "UTC" å³å¯ã
å¦æä½ å½å°æ¶åºç¸å¯¹äº UTC æåç§»ï¼é£ä¹ä¸é¢ä»£ç 伿¾ç¤ºä¸åçå°æ¶æ°ï¼
// å½åæ¥æ
let date = new Date();
// å½å°æ¶åºçå°æ¶æ°
alert( date.getHours() );
// å¨ UTC+0 æ¶åºçå°æ¶æ°ï¼éå¤ä»¤æ¶çä¼¦æ¦æ¶é´ï¼
alert( date.getUTCHours() );
é¤äºä¸è¿°ç»å®çæ¹æ³ï¼è¿æä¸¤ä¸ªæ²¡æ UTC åä½çç¹æ®æ¹æ³ï¼
- getTime()
-
è¿åæ¥æçæ¶é´æ³ ââ ä» 1970-1-1 00:00:00 UTC+0 å¼å§å°ç°å¨æç»è¿çæ¯«ç§æ°ã
- getTimezoneOffset()
-
è¿å UTC 䏿¬å°æ¶åºä¹é´çæ¶å·®ï¼ä»¥åé为åä½ï¼
// å¦æä½ å¨æ¶åº 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-01-01 00:00:00 UTC+0 以æ¥çæ¯«ç§æ°æ¥è®¾ç½®æ´ä¸ªæ¥æï¼
以䏿¹æ³é¤äº setTime() 齿 UTC åä½ï¼ä¾å¦ï¼setUTCHours()ã
æä»¬å¯ä»¥çå°ï¼æäºæ¹æ³å¯ä»¥ä¸æ¬¡æ§è®¾ç½®å¤ä¸ªç»ä»¶ï¼æ¯å¦ setHoursãæªæåçç»ä»¶ä¸ä¼è¢«ä¿®æ¹ã
举个ä¾åï¼
let today = new Date();
today.setHours(0);
alert(today); // æ¥æä¾ç¶æ¯ä»å¤©ï¼ä½æ¯å°æ¶æ°è¢«æ¹ä¸ºäº 0
today.setHours(0, 0, 0, 0);
alert(today); // æ¥æä¾ç¶æ¯ä»å¤©ï¼æ¶é´ä¸º 00:00:00ã
èªå¨æ ¡åï¼Autocorrectionï¼
èªå¨æ ¡å æ¯ Date 对象çä¸ä¸ªé常æ¹ä¾¿çç¹æ§ãæä»¬å¯ä»¥è®¾ç½®è¶
èå´çæ°å¼ï¼å®ä¼èªå¨æ ¡åã
举个ä¾åï¼
let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
alert(date); // â¦â¦æ¯ 1st Feb 2013!
è¶ åºèå´çæ¥æç»ä»¶å°ä¼è¢«èªå¨åé ã
å设æä»¬è¦å¨æ¥æ â28 Feb 2016â ä¸å 2 天ãç»æå¯è½æ¯ â2 Marâ æ â1 Marâï¼å 为åå¨é°å¹´ã使¯æä»¬ä¸éè¦èèè¿äºï¼åªéè¦ç´æ¥å 2 天ï¼å©ä¸ç Date 对象ä¼å¸®æä»¬å¤çï¼
let date = new Date(2016, 1, 28);
date.setDate(date.getDate() + 2);
alert( date ); // 1 Mar 2016
è¿ä¸ªç¹æ§ç»å¸¸è¢«ç¨æ¥è·åç»å®æ¶é´æ®µåçæ¥æãä¾å¦ï¼æä»¬æ³è·åâç°å¨ 70 ç§åâçæ¥æï¼
let date = new Date();
date.setSeconds(date.getSeconds() + 70);
alert( date ); // æ¾ç¤ºæ£ç¡®çæ¥æä¿¡æ¯
æä»¬è¿å¯ä»¥è®¾ç½® 0 çè³å¯ä»¥è®¾ç½®è´å¼ãä¾å¦ï¼
let date = new Date(2016, 0, 2); // 2016 å¹´ 1 æ 2 æ¥
date.setDate(1); // è®¾ç½®ä¸ºå½æç第ä¸å¤©
alert( date );
date.setDate(0); // å¤©æ°æå°å¯ä»¥è®¾ç½®ä¸º 1ï¼æä»¥è¿éè®¾ç½®çæ¯ä¸ä¸æçæåä¸å¤©
alert( date ); // 31 Dec 2015
æ¥æè½¬å为æ°åï¼æ¥æå·®å¼
å½ Date 对象被转å为æ°åæ¶ï¼å¾å°çæ¯å¯¹åºçæ¶é´æ³ï¼ä¸ä½¿ç¨ date.getTime() çç»æç¸åï¼
let date = new Date();
alert(+date); // 以毫ç§ä¸ºåä½çæ°å¼ï¼ä¸ä½¿ç¨ date.getTime() çç»æç¸å
æä¸ä¸ªéè¦çå¯ä½ç¨ï¼æ¥æå¯ä»¥ç¸åï¼ç¸åçç»ææ¯ä»¥æ¯«ç§ä¸ºå使¶é´å·®ã
è¿ä¸ªä½ç¨å¯ä»¥ç¨äºæ¶é´æµéï¼
let start = new Date(); // å¼å§æµéæ¶é´
// do the job
for (let i = 0; i < 100000; i++) {
let doSomething = i * i * i;
}
let end = new Date(); // ç»ææµéæ¶é´
alert( `The loop took ${end - start} ms` );
Date.now()
妿æä»¬ä»
ä»
æ³è¦æµéæ¶é´é´éï¼æä»¬ä¸éè¦ Date 对象ã
æä¸ä¸ªç¹æ®çæ¹æ³ Date.now()ï¼å®ä¼è¿åå½åçæ¶é´æ³ã
å®ç¸å½äº new Date().getTime()ï¼ä½å®ä¸ä¼å建ä¸é´ç Date 对象ãå æ¤å®æ´å¿«ï¼èä¸ä¸ä¼å¯¹åå¾åæ¶é æé¢å¤çååã
è¿ç§æ¹æ³å¾å¤æ¶åå 为æ¹ä¾¿ï¼åææ¯å æ§è½æ¹é¢çèèè被éç¨ï¼ä¾å¦ä½¿ç¨ JavaScript ç¼å游ææå ¶ä»çç¹æ®åºç¨åºæ¯ã
å æ¤è¿æ ·åå¯è½ä¼æ´å¥½ï¼
let start = Date.now(); // ä» 1 Jan 1970 è³ä»çæ¶é´æ³
// do the job
for (let i = 0; i < 100000; i++) {
let doSomething = i * i * i;
}
let end = Date.now(); // 宿
alert( `The loop took ${end - start} ms` ); // ç¸åçæ¯æ¶é´æ³ï¼è䏿¯æ¥æ
åºåæµè¯ï¼Benchmarkingï¼
å¨å¯¹ä¸ä¸ªå¾è CPU æ§è½ç彿°è¿è¡å¯é çåºåæµè¯ï¼Benchmarkingï¼æ¶ï¼æä»¬éè¦è°¨æ ä¸ç¹ã
ä¾å¦ï¼æä»¬æ³å¤æä»¥ä¸ä¸¤ä¸ªè®¡ç®æ¥æå·®å¼ç彿°ï¼åªä¸ªæ´å¿«ï¼
è¿ç§æ§è½æµéé常称为âåºåæµè¯ï¼benchmarkï¼âã
// æä»¬æ date1 å date2ï¼åªä¸ªå½æ°ä¼æ´å¿«å°è¿å两è
çæ¶é´å·®ï¼
function diffSubtract(date1, date2) {
return date2 - date1;
}
// or
function diffGetTime(date1, date2) {
return date2.getTime() - date1.getTime();
}
è¿ä¸¤ä¸ªå½æ°åçäºæ
å®å
¨ç¸åï¼ä½æ¯å
¶ä¸ä¸ä¸ªå½æ°ä½¿ç¨æ¾å¼ç date.getTime() æ¥è·å毫ç§å½¢å¼çæ¥æï¼å¦ä¸ä¸ªåä¾èµäºâæ¥æ â æ°åâç转æ¢ãå®ä»¬çç»ææ¯ä¸æ ·çã
é£ä¹ï¼åªä¸ªæ´å¿«å¢ï¼
é¦å æ³å°çæ¹æ³å¯è½æ¯è¿ç»è¿è¡ä¸¤è å¾å¤æ¬¡ï¼å¹¶è®¡ç®ææ¶èçæ¶é´ä¹å·®ãå°±è¿ä¸ªä¾åèè¨ï¼å½æ°è¿äºç®åï¼æä»¥æä»¬å¿ é¡»æ§è¡è³å° 100000 次ã
让æä»¬å¼å§æµéï¼
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' );
çèµ·æ¥ä½¿ç¨ getTime() è¿ç§æ¹å¼å¿«å¾å¤ï¼è¿æ¯å ä¸ºå®æ²¡æè¿è¡ç±»å转æ¢ï¼å¯¹å¼æä¼åæ¥è¯´æ´å ç®åã
æä»¬å¾å°äºç»è®ºï¼ä½æ¯è¿å¹¶ä¸æ¯ä¸ä¸ªå¾å¥½ç度éçä¾åã
æ³è±¡ä¸ä¸å½è¿è¡ bench(diffSubtract) çåæ¶ï¼CPU è¿å¨å¹¶è¡å¤çå
¶ä»äºå¡ï¼å¹¶ä¸è¿ä¹ä¼å ç¨èµæºãç¶èï¼è¿è¡ bench(diffGetTime) çæ¶åï¼å¹¶è¡å¤ççäºå¡å®æäºã
对äºç°ä»£å¤è¿ç¨æä½ç³»ç»æ¥è¯´ï¼è¿æ¯ä¸ä¸ªé常常è§çåºæ¯ã
æ¯èµ·ç¬¬äºä¸ªå½æ°ï¼ç¬¬ä¸ä¸ªå½æ°æè½ä½¿ç¨ç CPU èµæºæ´å°ãè¿å¯è½å¯¼è´é误çç»è®ºã
为äºå¾å°æ´å å¯é ç度éï¼æ´ä¸ªåº¦éæµè¯å åºè¯¥éæ°è¿è¡å¤æ¬¡ã
ä¾å¦ï¼åä¸é¢ç代ç è¿æ ·ï¼
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) å bench(diffGetTime) å 10 次
for (let i = 0; i < 10; i++) {
time1 += bench(diffSubtract);
time2 += bench(diffGetTime);
}
alert( 'Total time for diffSubtract: ' + time1 );
alert( 'Total time for diffGetTime: ' + time2 );
ç°ä»£ç JavaScript 弿çå è¿ä¼åçç¥åªå¯¹æ§è¡å¾å¤æ¬¡ç âhot codeâ ææï¼å¯¹äºæ§è¡å¾å°æ¬¡æ°çä»£ç æ²¡æå¿ è¦ä¼åï¼ãå æ¤ï¼å¨ä¸é¢çä¾åä¸ï¼ç¬¬ä¸æ¬¡æ§è¡çä¼åç¨åº¦ä¸é«ãæä»¬å¯è½éè¦å¢å ä¸ä¸ªé¢çæ¥éª¤ï¼
// å¨ä¸»å¾ªç¯ä¸å¢å é¢çç¯è
bench(diffSubtract);
bench(diffGetTime);
// å¼å§åº¦é
for (let i = 0; i < 10; i++) {
time1 += bench(diffSubtract);
time2 += bench(diffGetTime);
}
ç°ä»£ç JavaScript 弿æ§è¡äºå¾å¤ä¼åã䏿£å¸¸ç¼åç代ç ç¸æ¯ï¼å®ä»¬å¯è½ä¼æ¹åâ人为ç¼åçä¸ç¨äºæµè¯ç代ç âçæ§è¡æµç¨ï¼ç¹å«æ¯å¨æä»¬å¯¹å¾å°ç代ç çæ®µè¿è¡åºåæµè¯æ¶ï¼ä¾å¦æä¸ªè¿ç®ç¬¦æå å»ºå½æ°ç工使¹å¼ãå æ¤ï¼ä¸ºäºæ·±å ¥çè§£æ§è½é®é¢ï¼è¯·å¦ä¹ JavaScript 弿çå·¥ä½åçãå¨é£ä¹åï¼ä½ æè®¸åä¹ä¸éè¦è¿è¡å¾®ååºåæµè¯äºã
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) è°ç¨ä¼è§£æç»å®æ ¼å¼çå符串ï¼å¹¶è¿åæ¶é´æ³ï¼èª 1970-01-01 00:00:00 èµ·æç»è¿çæ¯«ç§æ°ï¼ã妿ç»å®åç¬¦ä¸²çæ ¼å¼ä¸æ£ç¡®ï¼åè¿å NaNã
举个ä¾åï¼
let ms = Date.parse('2012-01-26T13:51:50.417-07:00');
alert(ms); // 1327611110417 (æ¶é´æ³)
æä»¬å¯ä»¥éè¿æ¶é´æ³æ¥ç«å³å建ä¸ä¸ª new Date 对象ï¼
let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );
alert(date);
æ»ç»
- å¨ JavaScript ä¸ï¼æ¥æåæ¶é´ä½¿ç¨ Date 对象æ¥è¡¨ç¤ºãæä»¬ä¸è½åç¬åå»ºæ¥æææ¶é´ï¼
Dateå¯¹è±¡æ»æ¯åæ¶å建两è ã - æä»½ä» 0 å¼å§è®¡æ°ï¼å¯¹ï¼ä¸ææ¯ 0ï¼ã
- ä¸å¨ä¸çæä¸å¤©
getDay()åæ ·ä» 0 å¼å§è®¡ç®ï¼0 ä»£è¡¨æææ¥ï¼ã - å½è®¾ç½®äºè¶
åºèå´çç»ä»¶æ¶ï¼
Dateä¼è¿è¡èªå¨æ ¡åãè¿ä¸ç¹å¯¹äºæ¥/æ/å°æ¶çå å徿ç¨ã - æ¥æå¯ä»¥ç¸åï¼å¾å°çæ¯ä»¥æ¯«ç§è¡¨ç¤ºç两è
çå·®å¼ãå 为å½
Date被转æ¢ä¸ºæ°åæ¶ï¼Date对象ä¼è¢«è½¬æ¢ä¸ºæ¶é´æ³ã - 使ç¨
Date.now()å¯ä»¥æ´å¿«å°è·åå½åæ¶é´çæ¶é´æ³ã
åå ¶ä»ç³»ç»ä¸åï¼JavaScript 䏿¶é´æ³ä»¥æ¯«ç§ä¸ºåä½ï¼è䏿¯ç§ã
ææ¶æä»¬éè¦æ´å ç²¾åçæ¶é´åº¦éãJavaScript èªèº«å¹¶æ²¡ææµéå¾®ç§çæ¹æ³ï¼ç¾ä¸åä¹ä¸ç§ï¼ï¼ä½å¤§å¤æ°è¿è¡ç¯å¢ä¼æä¾ãä¾å¦ï¼æµè§å¨æ performance.now() æ¹æ³æ¥ç»åºä»é¡µé¢å è½½å¼å§ç以毫ç§ä¸ºåä½çå¾®ç§æ°ï¼ç²¾ç¡®å°æ¯«ç§çå°æ°ç¹åä¸ä½ï¼ï¼
alert(`Loading started ${performance.now()}ms ago`);
// ç±»ä¼¼äº "Loading started 34731.26000000001ms ago"
// .26 è¡¨ç¤ºçæ¯å¾®ç§ï¼260 å¾®ç§ï¼
// å°æ°ç¹åè¶
è¿ 3 ä½çæ°åæ¯ç²¾åº¦é误ï¼åªæåä¸ä½æ°åæ¯æ£ç¡®ç
Node.js å¯ä»¥éè¿ microtime 模åæä½¿ç¨å
¶ä»æ¹æ³ã仿æ¯ä¸è®²ï¼å 乿æç设å¤åç¯å¢é½å
许è·åæ´é«ç²¾åº¦çæ¶é´æ°å¼ï¼åªä¸è¿ä¸æ¯ä½¿ç¨ Date 对象ã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼