Golang 時間日期處理


在 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)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM