【Tool】Unix 時間戳(Unix timestamp) 轉換

【Tool】Unix 時間戳(Unix timestamp) 轉換

本篇重點

  • 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 可以根據不同的方式建立日期物件

當前日期與時間

javascript
1
2
const now = new Date();
console.log(now); // Mon Jan 27 2025 16:20:45 GMT+0800 (台北標準時間)

指定日期

javascript
1
2
3
// 2025 年 1 月 15 日
const specificDate = new Date(2025, 0, 15);
console.log(specificDate); // Wed Jan 15 2025 00:00:00 GMT+0800 (台北標準時間)

健忘筆記

JavaScript 的 Date() 月份(Month)是從 0 到 11 進行編號,0 表示 1 月、1 表示 2 月以此類推,因此指定月份的時候要手動減一

指定日期與時間

javascript
1
2
3
// 2025/01/15 14:30:00
const dateTime = new Date(2025, 0, 15, 14, 30, 0);
console.log(dateTime); // Wed Jan 15 2025 14:30:00 GMT+0800 (台北標準時間)

透過字串建立

javascript
1
2
3
// 解析 ISO 格式日期字串
const fromString = new Date("2025-01-15T14:30:00");
console.log(fromString); // Wed Jan 15 2025 14:30:00 GMT+0800 (台北標準時間)

透過時間戳建立

javascript
1
2
const fromTimestamp = new Date(1673820000000);
console.log(fromTimestamp); // Mon Jan 16 2023 06:00:00 GMT+0800 (台北標準時間)

健忘筆記

直接寫入時間戳的話,要以毫秒為單位

取得日期與時間的資訊

Date 提供了多個方法來獲取特定的日期或時間資訊

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const now = new Date();
// 取得年份
console.log("年:", now.getFullYear()); // 年: 2025
// 取得月份(0-11,需要 +1)
console.log("月:", now.getMonth() + 1); // 月: 1
// 取得日期
console.log("日:", now.getDate()); // 日: 27
// 取得小時
console.log("時:", now.getHours()); // 時: 16
// 取得分鐘
console.log("分:", now.getMinutes()); // 分: 26
// 取得秒數
console.log("秒:", now.getSeconds()); // 秒: 9
// 取得星期幾(0 = 星期日)
console.log("星期:", now.getDay()); // 星期: 1

健忘筆記

JavaScript .getDay() 取得星期幾是從 0 到 6 進行編號,0 表示 星期日、1 表示 星期一以此類推

時間戳應用

Date 中的時間戳是以毫秒為單位,如果要取得以秒為單位的時間戳需要做轉換

javascript
1
2
3
4
5
const now = new Date();
// 取得毫秒時間戳
console.log("毫秒時間戳:", now.getTime()); // 毫秒時間戳: 1737967042147
// 換算成秒
console.log("秒時間戳:", Math.floor(now.getTime() / 1000)); // 秒時間戳: 1737967042

日期格式化

JavaScript 的 Date 沒有提供原生的格式化方法,但可以用字串拼接的方式實現

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Date-Time Format:YYYY/MM/DD HH:MM:SS
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); // 格式化日期: 2025/01/27 16:43:21

健忘筆記

padStart() 用來在字串的開頭填充指定的字元,以確保字串達到特定的長度。

str.padStart(targetLength , padString)

  • targetLength:目標字串的長度,如果原字串長度已經大於或等於 targetLength,則不會進行填充。
  • padString:用來填充的字串。如果未指定,預設會用空白字元 (“ “) 填充。

取得當前時區偏移量

new Date().getTimezoneOffset() 回傳當前時區的偏移量(以分鐘為單位),偏移量表示本地時間與 GMT 的差異,且為相反數

  • 如果是 UTC+8,則偏移量為 -480(本地時間比 GMT 快 480 分鐘)。
  • 如果是 UTC-5,則偏移量為 300(本地時間比 GMT 慢 300 分鐘)。
javascript
1
2
3
4
5
6
// 計算當前時區相對於 GMT 的時差(以小時為單位)
const timezoneOffset = -new Date().getTimezoneOffset() / 60;

// 根據時差生成對應的 GMT 字串
const gmtString = `GMT ${timezoneOffset >= 0 ? "+" : ""}${timezoneOffset}`;
console.log(gmtString); // GMT +8

計算日期差

利用 Date 的時間戳,計算兩個日期的差值

javascript
1
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} 天`); // 日期相差 14 天

延伸閱讀

【Tool】Unix 時間戳(Unix timestamp) 轉換

https://forgetfulengineer.github.io/Other/Tool/Unix-imestamp-Conversion/

作者

健忘工程師

發表於

2025-01-29

更新於

2025-01-29

許可協議


你可能也想看

【PHP、JavaScript】陣列自定義排序
【jQuery、css】解析六種組合選擇器:相連、+、~、>、,、空格
【jQuery】click 事件綁定方式比較

評論

複製完成