Golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換超全面詳細(xì)講解
獲取時(shí)間
獲取當(dāng)前時(shí)間
package main import ( "fmt" "time" ) func main() { currentTime := time.Now() //當(dāng)前時(shí)間 currentYear := time.Now().Year() //當(dāng)前年 currentMonth := time.Now().Month() //當(dāng)前月 currentDay := time.Now().Day() //當(dāng)前日 currentHour := time.Now().Hour() //當(dāng)前小時(shí)小時(shí) currentMinute := time.Now().Minute() //當(dāng)前分鐘 currentSecond := time.Now().Second() //當(dāng)前秒 currentNSecond := time.Now().Nanosecond() //當(dāng)前納秒 //打印結(jié)果 fmt.Println("當(dāng)前時(shí)間是:", currentTime) fmt.Println("當(dāng)前年:", currentYear) fmt.Println("當(dāng)前月:", currentMonth) fmt.Println("當(dāng)前日:", currentDay) fmt.Println("當(dāng)前小時(shí):", currentHour) fmt.Println("當(dāng)前分鐘:", currentMinute) fmt.Println("當(dāng)前秒:", currentSecond) fmt.Println("當(dāng)前納秒:", currentNSecond)
結(jié)果輸出
當(dāng)前時(shí)間是: 2022-04-22 16:42:44.1160954 +0800 CST m=+0.004795301
當(dāng)前年: 2022
當(dāng)前月: April
當(dāng)前日: 22
當(dāng)前小時(shí): 16
當(dāng)前分鐘: 42
當(dāng)前秒: 44
當(dāng)前納秒: 150022700
獲取之前/之后的時(shí)間
獲取1分鐘之前的時(shí)間戳
package main import ( "fmt" "time" ) func main() { currentTime := time.Now() m, _ := time.ParseDuration("-1m") result := currentTime.Add(m) fmt.Println(result) }
說明
- time.ParseDuration 將傳入的"-1m"轉(zhuǎn)換為“持續(xù)時(shí)間”類型(time.Duration),輸出為-0h1m0s
- 之后Add() 可對(duì)其和時(shí)間進(jìn)行計(jì)算
結(jié)果輸出
2022-04-22 16:43:20.9844622 +0800 CST m=-59.994691699
獲取一小時(shí)之前的時(shí)間
方法同上,持續(xù)時(shí)間可如下轉(zhuǎn)換:time.ParseDuration(“-1h”)
package main import ( "fmt" "time" ) func main() { currentTime := time.Now() m, _ := time.ParseDuration("-1h") result := currentTime.Add(m) fmt.Println(result) }
結(jié)果輸出
2022-04-22 15:47:01.9977133 +0800 CST m=-3599.992986699
獲取1小時(shí)后的時(shí)間
方法同上,持續(xù)時(shí)間可如下轉(zhuǎn)換:ime.ParseDuration(“1h”)
package main import ( "fmt" "time" ) func main() { currentTime := time.Now() m, _ := time.ParseDuration("1h") result := currentTime.Add(m) fmt.Println(result) }
結(jié)果輸出
2022-04-22 17:50:58.3395738 +0800 CST m=+3600.004424801
獲時(shí)間戳
獲取當(dāng)前時(shí)間戳
package main import ( "fmt" "time" ) func main() { fmt.Printf("時(shí)間戳(秒):%v;\n", time.Now().Unix()) fmt.Printf("時(shí)間戳(納秒):%v;\n",time.Now().UnixNano()) fmt.Printf("時(shí)間戳(毫秒):%v;\n",time.Now().UnixNano() / 1e6) fmt.Printf("時(shí)間戳(納秒轉(zhuǎn)換為秒):%v;\n",time.Now().UnixNano() / 1e9) }
輸出結(jié)果
時(shí)間戳(秒):1650617834;
時(shí)間戳(納秒):1650617834110539400;
時(shí)間戳(毫秒):1650617834110;
時(shí)間戳(納秒轉(zhuǎn)換為秒):1650617834;
時(shí)間轉(zhuǎn)時(shí)間戳
package main import ( "fmt" "time" ) func main() { timeStamp := time.Date(2022, 5, 20, 13, 14, 0, 0, time.Local).Unix() fmt.Println("時(shí)間轉(zhuǎn)時(shí)間戳:",timeStamp) }
結(jié)果輸出
時(shí)間轉(zhuǎn)時(shí)間戳: 1653023640
時(shí)間戳轉(zhuǎn)時(shí)間
package main import ( "fmt" "time" ) func main() { timeStr := time.Unix(1650617834, 0) fmt.Println(timeStr) }
結(jié)果輸出
2022-04-22 16:57:14 +0800 CST
按模板格式化輸出
注意:模板格式里的時(shí)間不能隨意更改
package main import ( "fmt" "time" ) func main() { timeLayout := "2006-01-02 15:04:05" timeStr := time.Unix(1653023640, 0).Format(timeLayout) fmt.Println(timeStr) }
結(jié)果輸出
2022-05-20 13:14:00
題外話:獲取當(dāng)前時(shí)間的年月日時(shí)分秒的拼接(月日等補(bǔ)足到兩位)
now := time.Now()
nowSecond := strconv.Itoa(now.Year()) + fmt.Sprintf("%02d", now.Month()) + fmt.Sprintf("%02d", now.Day()) + fmt.Sprintf("%02d", now.Hour()) + fmt.Sprintf("%02d", now.Minute()) + fmt.Sprintf("%02d", now.Second())
結(jié)果輸出
20221209103544
到此這篇關(guān)于Golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換超全面詳細(xì)講解的文章就介紹到這了,更多相關(guān)Golang時(shí)間戳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang的select多路復(fù)用及channel使用操作
這篇文章主要介紹了Golang的select多路復(fù)用及channel使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12