13 Golang time包以及日期相关函数

时间:2021-6-7 作者:qvyue
  • 打印当前日期
import (
    "fmt" 
    "time"
)
func main(){
    timeObj := time.Now()
    fmt.Println(timeObj)
    //2021-03-09 14:34:07.238318748 +0800 CST m=+0.000227397
    year := timeObj.Year()
    month := timeObj.Month()
    day := timeObj.Day()
    hour := timeObj.Hour()
    minute := timeObj.Minute()
    second := timeObj.Second()
    fmt.Printf("%d-%02d-%02d %02d:%02d:%02d",year,month,day,hour,minute,second)
    //2021-03-09 14:39:11
}

注意:%02d中的2表示宽度,如果整数不够2列就补上0

  • 年月日-时分秒对应格式化模板
时(12小时制) 时(24小时制)
2006 01 02 03 15 04 05
  • 使用format获取日期
func main(){
    timeObj := time.Now()
    formatTime := timeObj.Format("2006-01-02 15:04:05")
    //2021-03-09 14:40:57
    fmt.Println(formatTime)
}
  • 获取当前时间戳
timeObj := time.Now()
unixTime := timeObj.Unix()
fmt.Println(unixTime)//1615272791 (秒)
fmt.Println(time.Now().UnixNano() / 1e6) // 1615272969535 (毫秒)
unixNaTime := timeObj.UnixNano()
fmt.Println(unixNaTime)//1615273096965400903 (纳秒)
  • 时间戳转换成日期字符串
unixTime := 1615272791
timeObj := time.Unix(int64(unixTime), 0)
str := timeObj.Format("2006-01-02 14:04:05")
fmt.Println(str)//2021-03-09 14:53:11

注意,这里要将Unix中的参数转换成int64类型

  • 日期字符串转换成时间戳

ParseInLocation(要格式化的模板, 要转换的日期字符串, time.Local)

var str = "2021-03-09 14:53:11"
var timeTmp = "2006-01-02 15:04:05" 
timeObj, _ := time.ParseInLocation(timeTmp, str, time.Local)
fmt.Println(timeObj.Unix())
  • 时间间隔
fmt.Println(time.Millisecond)//1ms
fmt.Println(time.Second)//1s
  • 时间操作函数

add

var timeObj = time.Now()
fmt.Println(timeObj)
//2021-03-09 15:45:00.958302257 +0800 CST m=+0.000181281
timeObj = timeObj.Add(time.Hour)
fmt.Println(timeObj)
//2021-03-09 16:45:00.958302257 +0800 CST m=+3600.000181281
  • 定时器

通过Stop终止执行

ticker := time.NewTicker(time.Second)//定义一个1S间隔的定时器
n := 0
for i := range ticker.C {
    fmt.Println(i) //每秒都会执行的任务
    n++
    if n > 5 {
        ticker.Stop()
        return
    }
}

通过死循环time.Sleep(time.Second),相当于js中的延时器setTimeOut

for {
    time.Sleep(time.Second)
    fmt.Println("定时任务")
}
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。