剛開始處理時間這塊的時候都是使用套件 moment.js ,沒仔細去研究 Date 物件,直到某天才發現自己連 new Date 都不知道是什麼(汗顏)因此花點時間來了解 javascript Date 物件。
如果要取的當前的時間可以用(這邊是取用戶端的電腦時間)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 new Date ()建立特定時間點的時間物件,透過傳入不同格式的參數 new Date (1589641033968 ) new Date (`'December 15, 1995 03:24:00'` ) new Date (2020 ,12 ,25 ) new Date (2020 ,12 ,25 ,10 ,20 ,30 ) var today = new Date ()var otherday = new Date (2019 , 5 , 5 )if (today > otherday){ console .log ('today 比 otherday 更晚' ) }
計算兩天之間的時間差
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var day1 = new Date (2020 ,5 ,1 )var day2 = new Date (2020 ,8 ,1 )var time = (day2 - day1) / (1000 \*60 \*60 \*24 )console .log (time) - getFullYear () - getMonth () - getDate () - getHours () - getMinutes () - getSeconds () - getMilliseconds () - getDay () - getTime ()
下方這個取的是世界協調時間(Coordinated Universal Time)(時區為 0)
1 2 3 4 5 6 7 8 -getUTCFullYear () - getUTCMonth () - getUTCDate () - getUTCHours () - getUTCMinutes () - getUTCSeconds () - getUTCMilliseconds () - getUTCDay ();
也可以用下列方式來設定時間
toString(): 將 Date 轉換為年月日時分秒的字串
toISOString(): 將 Date 轉換成 ISO 8601 格式的字串回傳。
toLocaleString(): 將 Date 轉換為年月日時分秒的本地時區的字串
1 2 3 4 5 6 7 8 9 10 11 var now = new Date ()now.toString () “Mon May 18 2020 09 :36 :11 GMT +0800 (台北標準時間)” now.toISOString () “2020 –05 –18T01 :36 :11. 735Z” now.toLocaleString () "2020/5/18 下午 7:38:17"
下面是一些例子的實作
1 2 3 function clock ( ) { var today = new Date () var hour = today.getHours () var min = today.getMinutes () var sec = today.getSeconds () console .log (addzero (hour) + ':' + addzero (min) + ':' + addzero (sec)) }
1 2 3 4 5 6 function addzero (num ) { if (num < 10 ) { return "0" + num; } return num; }
倒數功能(這個倒數在效能較差的裝置上,可能不會那麼精準)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 var timeTarget = new Date (2020 , 4 , 17 , 16 , 5 ).getTime ();var day = 0 ;var hour = 0 ;var min = 0 ;var sec = 0 ;function countDown ( ) { var nowTime = new Date ().getTime (); var distance = timeTarget - nowTime; if (distance < 0 ) { console .log ("時間到" ); clearInterval (timer); return ; } day = Math .floor (distance / (1000 * 60 * 60 * 24 )); hour = Math .floor ((distance - day * 1000 * 60 * 60 * 24 ) / (1000 * 60 * 60 )); min = Math .floor ( (distance - day * 1000 * 60 * 60 * 24 - hour * 1000 * 60 * 60 ) / (1000 * 60 ) ); sec = Math .floor ( (distance - day * 1000 * 60 * 60 * 24 - hour * 1000 * 60 * 60 - min * 1000 * 60 ) / 1000 ); console .log ("倒數:" + day + "天" + hour + "時" + min + "分" + sec + "秒" ); } var timer = setInterval (countDown, 1000 );