iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
Modern Web

30天前端網頁技術超入門介紹系列 第 15

Day15. JavaScript 日期、時間處理

終於跳票清單了?! 其實只是想改寫別的啦。況且開頭也沒說一定會照著清單出文對吧!嘿嘿~

這篇主要是介紹 JS 常用的方法,是說方法指的就是 .filter() 這種東西吧? 有時看別的文章寫作函式、函數...

不過根據方法定義這篇來看應該就是叫做方法

日期寫法

需要先建立 JS 的 Date 物件來指向某個時間點。

var date = new Date();
console.log(date);

建立完後就能使用該變數來取得屬性。

console.log(date.getDay()); // 來取得星期。
console.log(date.getDate()); // 來取得日期。
console.log(date.getMonth()); // 來取得月份,月份是從0開始,所以+1的話才會得到正確的月份。
console.log(date.getFullYear()); // 來取得年份。

取出的值都是數值,所以可以新增 switch 判斷來改成需要呈現的方式。

一樣先建立日期,再取得星期。

var date = new Date();
var day = date.getDay();
function changeChinese(day) {
    switch (day) {
            case 1:
                day = "一";
                break;
            case 2:
                day = "二";
                break;
            case 3:
                day = "三";
                break;
            case 4:
                day = "四";
                break;
            case 5:
                day = "五";
                break;
            case 6:
                day = "六";
                break;
            case 0:
                day = "日";
                break;
    }
    return day;
}

時間處理

一樣我們會需要 Date 物件

var date = new Date();

有個有趣的方式,他可以查閱自1970/1/1號到現在的毫秒數,至於為甚麼式從這個日期開始呢? 嘻嘻,就留給感興趣的人去查吧~~

console.log(date.getTime()); // 注意喔,顯示的是毫秒數

不過顯示毫秒數基本上沒什麼意義啦...所以以下我們就拿他做個簡單的倒數器吧~
可以在 Date 裡面指定日期參數

var comingDate = new Date('Jan 01, 2021 00:00:00');

指定日期目前時間相減就是到達指定日期所剩的秒數

var des = comingDate - date.getTime();

再來就可以把毫秒數轉成秒數、分鐘、小時、天數並呈現到你的網頁上。
Math.floor 可以進行無條件捨去法

var days = Math.floor(des / (1000 * 60 * 60 * 24));

// % 運算子會去取得相除所剩下的餘數,由於執行順序與除號一樣,所以會由左至右執行
// 下面將是將一天所剩的毫秒數在繼續做處理
var hours = Math.floor(des % (1000 * 60 * 60 * 24) / (1000 * 60 * 60));
var mins = Math.floor(des % (1000 * 60 * 60) / (1000 * 60));
var secs = Math.floor(des % (1000 * 60) / 1000);

倒數器需要不斷執行,因此將上述程式碼放在 setInterval 裡面

var viewTime = setInterval(function(){
    // 程式碼
}, 1000)

參考資料: MDN web docs - Date


這個應該還在超入門的範圍內吧XD,倒數器是個有趣的東西,製作了首個倒數器到現在他已經陪伴我2年的生日倒數了QQ
明天應該會介紹一下正規表達式

疑(? 清單上沒有這條阿... 當初的清單是先塞滿30天,到時想到什麼在寫什麼的心情去編排的。
編排上本來就沒有邏輯可言,所以接下來也有可能會變成作者想要寫啥就寫啥, 喔喔喔喔喔!盡請期待喔喔~~


上一篇
Day14. JavaScript 基礎常識介紹(六) - 迴圈
下一篇
Day16. 正規表達式
系列文
30天前端網頁技術超入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
Ivan Wei
iT邦新手 5 級 ‧ 2020-09-24 11:45:40

只有取當下 timestamp 使用 Date.now() 效果和 (new Date()).getTime() 一樣,提供另一種方式做參考

感謝補充~~

我要留言

立即登入留言