溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Golang中如何操作時(shí)間

發(fā)布時(shí)間:2020-10-26 16:49:48 來(lái)源:億速云 閱讀:136 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

今天就跟大家聊聊有關(guān)Golang中如何操作時(shí)間,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

實(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)之后

過(guò)程:這個(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)過(guò)去了多久
過(guò)程:這個(gè)是用Time的方式來(lái)對(duì)比

  beginTime :=time.Now()
  time.Sleep(time.Second*1)
  durtime:= time.Since(beginTime)
  fmt.Println("離現(xiàn)在過(guò)去了:",durtime)

看完上述內(nèi)容,你們對(duì)Golang中如何操作時(shí)間有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI