- 打印当前日期
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("定时任务")
}