golang 时间处理

自己的工具包 mytime

package utils

import (
	"fmt"
	"strconv"
	"time"
)

// GetNowTimeStr 获取当前时间(字符串)
func GetNowTimeStr() string{
	now := time.Now() //当前时间对象
	year := now.Year()
	month := now.Month()
	day := now.Day()
	hour := now.Hour()
	minute := now.Minute()
	second := now.Second()
	return fmt.Sprintf("%d-%02d-%02d %02d:%02d:%02d",year,month,day,hour,minute,second)
}

// GetNowTimestamp 获取当前的时间戳(1-秒 2-纳秒)
func GetNowTimestamp(tt int) int64{
	if tt == 1 {
		return time.Now().Unix()
	}else{
		return time.Now().UnixNano()
	}
}

// TimestampToStr 时间戳转时间字符串 (秒 毫秒 纳秒)
func TimestampToStr(timestamp int64) string {
	// 秒 毫秒 纳秒
	l := len(strconv.FormatInt(timestamp,10))
	if l == 19 {
		// 纳秒
		timestamp = timestamp / 1e9
	}else if l == 13 {
		// 毫秒
		timestamp = timestamp / 1e3
	}else if l == 16 {
		timestamp = timestamp / 1e6
	}
	timeObj := time.Unix(timestamp, 0) //将时间戳转为时间格式
	year := timeObj.Year()     //年
	month := timeObj.Month()   //月
	day := timeObj.Day()       //日
	hour := timeObj.Hour()     //小时
	minute := timeObj.Minute() //分钟
	second := timeObj.Second() //秒
	return fmt.Sprintf("%d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second)
}

// StrToTimestamp 时间转时间戳(秒)
func StrToTimestamp(str string) (int64 ,error) {
	// 加载时区
	loc, err := time.LoadLocation("Asia/Shanghai")
	if err != nil {
		fmt.Println(err)
		return 0,err
	}
	// 按照指定时区和指定格式解析字符串时间
	timeObj, err := time.ParseInLocation("2006-01-02 15:04:05", str, loc)
	if err != nil {
		fmt.Println(err)
		return 0 ,err
	}
	return timeObj.Unix(),nil
}

你可能感兴趣的:(go,go)