Skip to content

[JavaScript] 如何比較與加減 Date() 的時間

Last Updated on 2022-08-26 by Clay

在使用 JavaScript 進行跟時間有關的比較與操作時,盡量使用 Date() 可以讓開發方便許多。以下我將依照:

  • 初始化時間
  • 時間與時間之間的比較
  • 時間的加減

這三個小主題去做紀錄。希望之後當我又再次有了需要使用 JavaScript 來操作時間的需求時,可以通過閱讀本篇筆記來快速喚醒記憶。


初始化時間

首先,我們來看看如何初始化時間。在 JavaScript 當中,我們可以使用 Date() 來建立一個包含日期在內的時間。

取得現在的時間

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


Output:

2021-12-22T11:36:35.078Z


初始化指定的日期

可以使用 yyyy-mm-dd 的格式去初始化、或是輸入指定的月份、日期、年份。

var date_01 = new Date("December 02, 1994");
var date_02 = new Date("1994-12-02");
var date_03 = new Date("1994/12/02");

console.log(date_01);
console.log(date_02);
console.log(date_03);


Output:

1994-12-02T00:00:00.000Z
1994-12-02T00:00:00.000Z
1994-12-02T00:00:00.000Z


這幾種方法都是可以的。


設置指定的時間

我們可以使用 setHours() 來設置成指定的時間(或是在初始化日期時一併在後方加入 hh:mm:ss 的格式)

// Init
var date_01 = new Date("1994-12-02");
var date_02 = new Date("1994/12/02");

// setHours(H, M, S)
date_01.setHours(12, 30, 0);
date_02.setHours(17, 45, 0);

// Print
console.log(date_01);
console.log(date_02);


Output:

1994-12-02T12:30:00.000Z
1994-12-02T17:45:00.000Z

時間與時間之間的比較

只要儲存時間的資料型態是 Date(),我們可以很輕易地使用 > 或 < 來比較兩個不同的時間。以概念上來說,時間點比較晚的日期會是比較大的。

// Init
var date_01 = new Date("1994-12-02");
var date_02 = new Date("1994/12/02");

// setHours(H, M, S)
date_01.setHours(12, 30, 0);
date_02.setHours(17, 45, 0);

// Compaison
if (date_01 < date_02) {
    console.log("date_01 is earlier.");
}
else {
    console.log("date_01 is earlier.");
}


Output:

date_01 is earlier.



時間的加減

時間的加減操作如果是自己手刻,那會是挺麻煩的一件事,畢竟你可能會需要考慮到日期、月份、年份是否也相應著產生改動。但是其實我們可以先將 Date() 時間轉成時間戳,減去或加上相應的秒數,再將新的時間戳以 Date() 的資料型態讀入,就會是我們全新的時間了。

而時間戳(Unix timestamp)究竟是什麼呢?其實是從格林威治時間 1970-01-01 00:00:00 到指定時間為止的總秒數

而即使是在不同的時區中,特定時間底的時間戳也都會是相同的,這代表我們只要轉換成時間戳就可以輕鬆地操作時間,十分地方便。

// Init
var date = new Date("1994-12-02 12:30:00");
var date_ts = date.getTime();
console.log("raw:     ", date)

// -15 minutes
date.setTime(date_ts - 15 * 1000 * 60);
console.log("-15 min: ", date);


// + 2 hours
date.setTime(date_ts + 2 * 1000 * 60 * 60);
console.log("+2 hours:", date);

// -3 Days
date.setTime(date_ts - 3 * 1000 * 60 * 60 * 24);
console.log("-3 Days: ", date);


Output:

raw:      1994-12-02T12:30:00.000Z
-15 min:  1994-12-02T12:15:00.000Z
+2 hours: 1994-12-02T14:30:00.000Z
-3 Days:  1994-11-29T12:30:00.000Z

References


Read More

2 thoughts on “[JavaScript] 如何比較與加減 Date() 的時間”

Leave a Reply