Date.now()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
Date.now() éæ
æ¹æ³åå³èªç´å
ï¼UTC æé 1970 å¹´ 1 æ 1 æ¥åå¤ï¼ä»¥ä¾ç¶éçæ¯«ç§æ¸ã
å試ä¸ä¸
// æ¤ç¯ä¾éè¦ 2 ç§å·è¡
const start = Date.now();
console.log("è¨æå¨åå...");
// é æè¼¸åºï¼ãè¨æå¨åå...ã
setTimeout(() => {
const ms = Date.now() - start;
console.log(`ç¶éçç§æ¸ = ${Math.floor(ms / 1000)}`);
// é æè¼¸åºï¼ãç¶éçç§æ¸ = 2ã
}, 2000);
èªæ³
Date.now()
忏
ç¡ã
åå³å¼
ä¸åæ¸åï¼è¡¨ç¤ºç¶åæéçæéæ³ï¼ä»¥æ¯«ç§çºå®ä½ï¼ã
æè¿°
>é使é精度
çºäºæä¾å°è¨ææ»æåæç´è¿½è¹¤çä¿è·ï¼Date.now() ç精度å¯è½ææ ¹æç覽å¨è¨å®é²è¡åæ¨äºå
¥ãå¨ Firefox ä¸ï¼privacy.reduceTimerPrecision å好è¨å®é è¨çºåç¨ï¼ä¸é è¨å¼çº 2msãä½ ä¹å¯ä»¥åç¨ privacy.resistFingerprintingï¼å¨é種æ
æ³ä¸ï¼ç²¾åº¦å°çº 100ms æ privacy.resistFingerprinting.reduceTimerPrecision.microseconds çå¼ï¼ä»¥è¼å¤§è
çºæºã
ä¾å¦ï¼å¨é使é精度çæ
æ³ä¸ï¼Date.now() ççµæå°å§çµæ¯ 2 çåæ¸ï¼æè
å¨åç¨ privacy.resistFingerprinting çæ
æ³ä¸æ¯ 100ï¼æ privacy.resistFingerprinting.reduceTimerPrecision.microsecondsï¼ç忏ã
// Firefox 60 ä¸éä½çæé精度ï¼2msï¼
Date.now();
// å¯è½çºï¼
// 1519211809934
// 1519211810362
// 1519211811670
// â¦
// åç¨ `privacy.resistFingerprinting` å¾éä½çæé精度
Date.now();
// å¯è½çºï¼
// 1519129853500
// 1519129858900
// 1519129864400
// â¦
ç¯ä¾
>測éç¶éçæé
ä½ å¯ä»¥ä½¿ç¨ Date.now() ä¾ç²åç¶åçæ¯«ç§æéï¼ç¶å¾æ¸å»å
åçæéï¼ä»¥è¨ç®å
©æ¬¡å¼å«ä¹éç¶éäºå¤å°æéã
const start = Date.now();
doSomeLongRunningProcess();
console.log(`ç¶éæéï¼${Date.now() - start} 毫ç§`);
å°æ¼æ´è¤éçæ å¢ï¼ä½ å¯è½éè¦æ¹ç¨ Performance APIã
è¦ç¯
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.now> |