本篇重點
- Unix timestamp 轉換工具
- 什麼是 Unix 時間戳(Unix timestamp)
- JavaScript 中的
Date()
應用 - 如何建立日期物件、日期格式化、計算日期差
- 取得日期與時間的資訊、當前時區偏移量
Unix 時間戳(Unix timestamp)轉換工具
Date-Time Format:YYYY/MM/DD HH:MM:SS
什麼是 Unix 時間戳(Unix timestamp)
Unix 時間戳(Unix timestamp)是一種時間表示方式,定義為從格林威治時間 1970 年 01 月 01 日 00 時 00 分 00 秒起到現在的總秒數。時間戳的特性是,不管在哪個時區,當下算出的時間戳都會是同樣的數值。這點對於應用程式非常有用,不管是要追蹤時間、計算時間差或是對日期進行排序,都可以利用時間戳來進行。在將時間戳轉換為時間時,也可以根據時區計算出當地的時間,是一種在程式中廣泛應用的技術。
JavaScript 中的 Date()
應用
Date 是 JavaScript 中內建的物件,專門用來處理日期和時間的工具。
建立日期物件
Date
可以根據不同的方式建立日期物件
當前日期與時間
javascript1 2
| const now = new Date(); console.log(now);
|
指定日期
javascript1 2 3
| const specificDate = new Date(2025, 0, 15); console.log(specificDate);
|
JavaScript 的 Date()
月份(Month)是從 0 到 11 進行編號,0 表示 1 月、1 表示 2 月以此類推,因此指定月份的時候要手動減一
指定日期與時間
javascript1 2 3
| const dateTime = new Date(2025, 0, 15, 14, 30, 0); console.log(dateTime);
|
透過字串建立
javascript1 2 3
| const fromString = new Date("2025-01-15T14:30:00"); console.log(fromString);
|
透過時間戳建立
javascript1 2
| const fromTimestamp = new Date(1673820000000); console.log(fromTimestamp);
|
取得日期與時間的資訊
Date
提供了多個方法來獲取特定的日期或時間資訊
javascript1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const now = new Date();
console.log("年:", now.getFullYear());
console.log("月:", now.getMonth() + 1);
console.log("日:", now.getDate());
console.log("時:", now.getHours());
console.log("分:", now.getMinutes());
console.log("秒:", now.getSeconds());
console.log("星期:", now.getDay());
|
JavaScript .getDay()
取得星期幾是從 0 到 6 進行編號,0 表示 星期日、1 表示 星期一以此類推
時間戳應用
Date 中的時間戳是以毫秒為單位,如果要取得以秒為單位的時間戳需要做轉換
javascript1 2 3 4 5
| const now = new Date();
console.log("毫秒時間戳:", now.getTime());
console.log("秒時間戳:", Math.floor(now.getTime() / 1000));
|
日期格式化
JavaScript 的 Date
沒有提供原生的格式化方法,但可以用字串拼接的方式實現
javascript1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const now = new Date(); const formattedDate = now.getFullYear() + "/" + String(now.getMonth() + 1).padStart(2, "0") + "/" + String(now.getDate()).padStart(2, "0") + " " + String(now.getHours()).padStart(2, "0") + ":" + String(now.getMinutes()).padStart(2, "0") + ":" + String(now.getSeconds()).padStart(2, "0");
console.log("格式化日期:", formattedDate);
|
padStart()
用來在字串的開頭填充指定的字元,以確保字串達到特定的長度。
str.padStart(targetLength , padString)
targetLength
:目標字串的長度,如果原字串長度已經大於或等於 targetLength,則不會進行填充。padString
:用來填充的字串。如果未指定,預設會用空白字元 (“ “) 填充。
取得當前時區偏移量
new Date().getTimezoneOffset()
回傳當前時區的偏移量(以分鐘為單位),偏移量表示本地時間與 GMT 的差異,且為相反數。
- 如果是 UTC+8,則偏移量為 -480(本地時間比 GMT 快 480 分鐘)。
- 如果是 UTC-5,則偏移量為 300(本地時間比 GMT 慢 300 分鐘)。
javascript1 2 3 4 5 6
| const timezoneOffset = -new Date().getTimezoneOffset() / 60;
const gmtString = `GMT ${timezoneOffset >= 0 ? "+" : ""}${timezoneOffset}`; console.log(gmtString);
|
計算日期差
利用 Date 的時間戳,計算兩個日期的差值
javascript1 2 3 4 5 6 7
| const date1 = new Date("2025-01-01"); const date2 = new Date("2025-01-15");
const diffInMilliseconds = date2 - date1; const diffInDays = diffInMilliseconds / (1000 * 60 * 60 * 24);
console.log(`日期相差 ${diffInDays} 天`);
|
延伸閱讀