主頁 > 知識庫 > 詳解Golang中的各種時間操作

詳解Golang中的各種時間操作

熱門標簽:官渡電銷外呼管理系統(tǒng)怎么收費 地圖區(qū)域圖標注后導(dǎo)出 杭州人工智能電銷機器人費用 谷歌美發(fā)店地圖標注 400開頭電話怎樣申請 赤峰電銷 江蘇呼叫中心外呼系統(tǒng)有效果嗎 貴州電話智能外呼系統(tǒng) 利用地圖標注位置

需求

時間格式的轉(zhuǎn)換比較麻煩,自己寫了個工具,可以通過工具中的這些方法相互調(diào)用轉(zhuǎn)成自己想要的格式,代碼如下,后續(xù)有新的函數(shù)再添加

實現(xiàn)代碼

package utils

import "time"

const (
 TIMEFORMAT = "20060102150405"
 NORMALTIMEFORMAT = "2006-01-02 15:04:05"
)

// 當前時間
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ù)
func GetTimeUnix(t time.Time) int64 {
 return t.Unix()
}

// 轉(zhuǎn)為時間戳->毫秒數(shù)
func GetTimeMills(t time.Time) int64 {
 return t.UnixNano() / 1e6
}

// 時間戳轉(zhuǎn)時間
func GetTimeByInt(t1 int64) time.Time{
 return time.Unix(t1,0)
}

// 字符串轉(zhuǎn)時間
func GetTimeByString(timestring string) (time.Time,error){
 if timestring == "" {
 return time.Time{},nil
 }
 return time.ParseInLocation(TIMEFORMAT, timestring, time.Local)
}

// 標準字符串轉(zhuǎn)時間
func GetTimeByNormalString(timestring string) (time.Time,error){
 if timestring == "" {
 return time.Time{},nil
 }
 return time.ParseInLocation(NORMALTIMEFORMAT, timestring, time.Local)
}

// 比較兩個時間大小
func CompareTime(t1 ,t2 time.Time) bool {
 return t1.Before(t2)
}

// n小時后的時間字符串
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)
}

// 計算倆個時間差多少小時
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
}

// 判斷當前時間是否是整點
func Checkhours() bool {
 _, m, s := GetTime().Clock()
 if m == s  m == 0  s == 0 {
 return true
 }
 return false
}

// 時間字符串轉(zhuǎ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
}

判斷一個時間點是否在一個時間點之后

過程:這個對于時間戳而言非常簡單,但是對于其他的需要轉(zhuǎn)換到time即可對比

  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之前!")
  }

判斷一個時間相比另外一個時間點過去了多久
過程:這個是用Time的方式來對比

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

到此這篇關(guān)于詳解Golang中的各種時間操作的文章就介紹到這了,更多相關(guān)Golang 時間操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang日志框架之logrus的使用
  • logrus日志自定義格式操作

標簽:鷹潭 武漢 泰安 松原 宜春 河池 黔西 保定

巨人網(wǎng)絡(luò)通訊聲明:本文標題《詳解Golang中的各種時間操作》,本文關(guān)鍵詞  詳解,Golang,中的,各種,時間,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Golang中的各種時間操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解Golang中的各種時間操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章