Go | 時間套件的函式與介紹
💬 簡介
時間處理是後端開發中極其常見的需求,無論是排程、記錄、計算時間差或格式化時間字串,time
套件都是 Go 語言中不可或缺的一環。
本篇將透過實際範例,介紹
time
套件中常見的時間操作函式,包括「取得現在時間」、「格式化與解析」、「時間加減與比較」等主題,幫助你靈活運用這組功能齊全的標準套件。
圖片來源:Gophers
🕒 時間取得與基本使用
1 | now := time.Now() |
🧭 區域時區與 UTC 時間
1 | now := time.Now() |
🧾 時間格式化與解析
⚙️ 格式化(Format)
Go 使用特殊方式來定義時間格式範本:
1 | Mon Jan 2 15:04:05 MST 2006 |
你必須以這個具體時間來定義輸出格式。
1 | now := time.Now() |
📐 解析(Parse)
將字串轉為 time.Time
型別:
1 | layout := "2006-01-02 15:04:05" |
📝 注意:格式必須與 layout 完全對應,否則解析會失敗。
➕ 時間加減與比較
⏱ 時間加減(Add/Sub)
1 | now := time.Now() |
⌛ 計算時間差(Duration)
1 | start := time.Now() |
🔍 時間比較(Before/After/Equal)
1 | t1 := time.Now() |
📌 實務應用場景
- ✅ 記錄使用者登入時間、訂單建立時間
- ✅ 計算某事件距今多久(時間差)
- ✅ 排程任務:定時執行工作(與 ticker、sleep 配合)
- ✅ 格式化為前端可閱讀的時間格式
- ✅ 處理跨時區時間轉換與顯示
🧰 延伸技巧與補充
使用
time.Unix()
/UnixNano()
處理 timestamp:1
2ts := time.Now().Unix()
fmt.Println("Unix 秒數:", ts)建立固定時間:
1
2custom := time.Date(2025, 6, 20, 12, 0, 0, 0, time.Local)
fmt.Println("自訂時間:", custom)時區轉換:
1
2
3loc, _ := time.LoadLocation("Asia/Taipei")
tInLoc := time.Now().In(loc)
fmt.Println("台北時間:", tInLoc)
🎯 總結
time
套件是 Go 語言中處理時間與日期的核心:
- ✅ 支援時間的取得、格式化與解析
- ✅ 可進行時間加減與時間差計算
- ✅ 適合與 sleep、ticker、cron 類套件結合使用
建議平時多熟悉 Format
的範本用法,並留意時區與格式一致性問題。
最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。
註:以上參考了
Go