在 golang 中使用time
標准包對時間進行處理
time 包下的Time
類型用來表示時間
獲取時間
- 使用用 time.Now()獲取當前時間
- 使用用 time.Now().Unix()獲取當前時間戳(1970.1.1.00000 到現在的秒數)
package main
import (
"fmt"
"time"
)
func main() {
// 獲取當前時間
now := time.Now()
fmt.Println(now)
// 分別獲取年月日
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
// 格式化輸出
// 02d表示數字不夠兩位前面補0
fmt.Printf("%02d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
// 獲取時間戳
fmt.Println(now.Unix()) // 獲取以秒為單位的時間戳
fmt.Println(now.UnixNano()) // 獲取以以納秒為單位的時間戳
}
時間戳轉換
時間戳轉換為 Time 類型
package main
import (
"fmt"
"time"
)
func main() {
timestamp := time.Now().Unix()
// 時間戳轉time, 第二個參數是對納秒數的精確為長度
timeObj := time.Unix(timestamp, 0)
fmt.Println(timeObj)
// 分別獲取年月日
year := timeObj.Year()
month := timeObj.Month()
day := timeObj.Day()
hour := timeObj.Hour()
minute := timeObj.Minute()
second := timeObj.Second()
// 格式化輸出
// 02d表示數字不夠兩位前面補0
fmt.Printf("%02d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}
golang 源碼中的常量定義
const (
// 納秒
Nanosecond Duration = 1
// 微秒
Microsecond = 1000 * Nanosecond
// 毫秒
Millisecond = 1000 * Microsecond
// 秒
Second = 1000 * Millisecond
// 分
Minute = 60 * Second
// 時
Hour = 60 * Minute
)
時間格式化
在其他語言中我們格式化時間是寫YYYY-MM-dd hh:mm:ss
這種表達式來表示,但是在 golang 中這邊表達式是不識別的,我們必須要寫成2006-01-02 15:04:05
這個樣子的表達式才能被成功的格式化。這個又是什么意思呢?這個時間是 golang 語言誕生的時間,我們必須要嚴格按照這個時間格式去寫,否則就會格式化不成功,頭大....。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
// 使用time.Now().Format()格式化, 2006-01-02 15:04:05 是go語言誕生時間,格式化必須寫這個時間,格式自定義
nowStr := now.Format("2006-01-02 15:04:05")
fmt.Println(nowStr)
}