Golang中的各種時間操作


Golang中的各種時間操作

需求

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

實現代碼

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

// 轉為時間戳->秒數
func GetTimeUnix(t time.Time) int64 {
	return t.Unix()
}

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

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

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

// 標准字符串轉時間
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
}

// 時間字符串轉為標准字符串
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
}


免責聲明!

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



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