詳解Golang中的各種時(shí)間操作
需求
時(shí)間格式的轉(zhuǎn)換比較麻煩,自己寫了個(gè)工具,可以通過工具中的這些方法相互調(diào)用轉(zhuǎn)成自己想要的格式,代碼如下,后續(xù)有新的函數(shù)再添加
實(shí)現(xiàn)代碼
package utils import "time" const ( TIMEFORMAT = "20060102150405" NORMALTIMEFORMAT = "2006-01-02 15:04:05" ) // 當(dāng)前時(shí)間 func GetTime() time.Time{ return time.Now() } // 格式化為:20060102150405 func GetTimeString(t time.Time) string { return t.Format(TIMEFORMAT) } // 格式化為:2006-01-02 15:04:05 func GetNormalTimeString(t time.Time) string { return t.Format(NORMALTIMEFORMAT) } // 轉(zhuǎn)為時(shí)間戳->秒數(shù) func GetTimeUnix(t time.Time) int64 { return t.Unix() } // 轉(zhuǎn)為時(shí)間戳->毫秒數(shù) func GetTimeMills(t time.Time) int64 { return t.UnixNano() / 1e6 } // 時(shí)間戳轉(zhuǎn)時(shí)間 func GetTimeByInt(t1 int64) time.Time{ return time.Unix(t1,0) } // 字符串轉(zhuǎn)時(shí)間 func GetTimeByString(timestring string) (time.Time,error){ if timestring == "" { return time.Time{},nil } return time.ParseInLocation(TIMEFORMAT, timestring, time.Local) } // 標(biāo)準(zhǔn)字符串轉(zhuǎn)時(shí)間 func GetTimeByNormalString(timestring string) (time.Time,error){ if timestring == "" { return time.Time{},nil } return time.ParseInLocation(NORMALTIMEFORMAT, timestring, time.Local) } // 比較兩個(gè)時(shí)間大小 func CompareTime(t1 ,t2 time.Time) bool { return t1.Before(t2) } // n小時(shí)后的時(shí)間字符串 func GetNextHourTime(s string, n int64) string { t2, _ := time.ParseInLocation(TIMEFORMAT, s, time.Local) t1 := t2.Add(time.Hour * time.Duration(n)) return GetTimeString(t1) } // 計(jì)算倆個(gè)時(shí)間差多少小時(shí) func GetHourDiffer(start_time, end_time string) float32 { var hour float32 t1, err := time.ParseInLocation(TIMEFORMAT, start_time, time.Local) t2, err := time.ParseInLocation(TIMEFORMAT, end_time, time.Local) if err == nil && CompareTime(t1,t2) { diff := GetTimeUnix(t2) - GetTimeUnix(t1) hour = float32(diff) / 3600 return hour } return hour } // 判斷當(dāng)前時(shí)間是否是整點(diǎn) func Checkhours() bool { _, m, s := GetTime().Clock() if m == s && m == 0 && s == 0 { return true } return false } // 時(shí)間字符串轉(zhuǎn)為標(biāo)準(zhǔn)字符串 func StringToNormalString(t string) string { if !(len(TIMEFORMAT) == len(t) || len(SHORTTIMESTRING) == len(t)) { return t } if len(SHORTTIMESTRING) == len(t) { t += "000000" } if len(TIMEFORMAT) == len(t) { t1,err:= GetTimeByString(t) if err != nil { return t } t = GetTimeString(t1) } return t }
判斷一個(gè)時(shí)間點(diǎn)是否在一個(gè)時(shí)間點(diǎn)之后
過程:這個(gè)對(duì)于時(shí)間戳而言非常簡(jiǎn)單,但是對(duì)于其他的需要轉(zhuǎn)換到time即可對(duì)比
stringToTime, _ := time.Parse("2006-01-02 15:04:05", "2017-12-12 12:00:00") beforeOrAfter := stringToTime.After(time.Now()) if beforeOrAfter == true { fmt.Println("2017-12-12 12:00:00在tNow之后!") } else { fmt.Println("2017-12-12 12:00:00在tNow之前!") }
判斷一個(gè)時(shí)間相比另外一個(gè)時(shí)間點(diǎn)過去了多久
過程:這個(gè)是用Time的方式來對(duì)比
beginTime :=time.Now() time.Sleep(time.Second*1) durtime:= time.Since(beginTime) fmt.Println("離現(xiàn)在過去了:",durtime)
到此這篇關(guān)于詳解Golang中的各種時(shí)間操作的文章就介紹到這了,更多相關(guān)Golang 時(shí)間操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go 如何基于IP限制HTTP訪問頻率的方法實(shí)現(xiàn)
這篇文章主要介紹了Go 如何基于IP限制HTTP訪問頻率的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Go語言使用buffer讀取文件的實(shí)現(xiàn)示例
本文主要介紹了Go語言使用buffer讀取文件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04詳解Golang time包中的結(jié)構(gòu)體time.Time
在日常開發(fā)過程中,會(huì)頻繁遇到對(duì)時(shí)間進(jìn)行操作的場(chǎng)景,使用 Golang 中的 time 包可以很方便地實(shí)現(xiàn)對(duì)時(shí)間的相關(guān)操作,本文先講解一下 time 包中的結(jié)構(gòu)體 time.Time,需要的朋友可以參考下2023-07-07gtoken替換jwt實(shí)現(xiàn)sso登錄的排雷避坑
這篇文章主要為大家介紹了gtoken替換jwt實(shí)現(xiàn)sso登錄的排雷避坑,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06使用golang實(shí)現(xiàn)一個(gè)MapReduce的示例代碼
這篇文章主要給大家介紹了關(guān)于如何使用golang實(shí)現(xiàn)一個(gè)MapReduce,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09golang調(diào)用c實(shí)現(xiàn)的dll接口細(xì)節(jié)分享
這篇文章主要介紹了golang調(diào)用c實(shí)現(xiàn)的dll接口細(xì)節(jié)分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05