一、简介
这里介绍go中关于时间的常用操作。具体包括时间的获取、输出、转换、加减、比较等操作。 官网地址为:
二、使用
2.1 时间各字段输出
package main
import (
“fmt”
“time”
)
func main() {
//当前时间
now := time.Now()
fmt.Println(now)
//时间戳,单位秒
seconds_stamp := now.Unix()
fmt.Println(seconds_stamp)
//时间戳,单位纳秒 1秒=1e3毫秒=1e9纳秒
fmt.Println(now.UnixNano())
//时间戳,单位毫秒
fmt.Println(now.UnixNano() / 1e6)
//只输出年,其他字段类似
fmt.Println(now.Year())
//只输出月
fmt.Println(now.Month())
//只输出天
fmt.Println(now.Day())
//只输小时
fmt.Println(now.Hour())
//一年的第几天
fmt.Println(now.YearDay())
//年月日
fmt.Println(now.Date())
//时分秒
fmt.Println(now.Clock())
}
2.2 时间与字符串、时间戳转换
package main
import (
“fmt”
“time”
)
func main() {
//当前时间
now := time.Now()
//时间转时间戳,单位秒
seconds_stamp := now.Unix()
//时间转字符串,时间格式化,模板为2006-01-02 15:04:05,区别为java中yyyy-MM-dd HH:mm:ss
//解析在方法time.format.nextStdChunk(),用上符号表示年月日等,是因为各字段是互斥的,具体可以看源码
fmt.Println(now.Format(“2006-01-02 15:04:05”)) //2019-07-17 18:43:16
//时间戳转时间
fmt.Println(time.Unix(seconds_stamp, 0))
//字符串转时间
fmt.Println(time.Parse(“2006-01-02 15:04:05”, “2019-07-01 08:18:18”))
}
2.3 时间加减即时间段操作
package main
import (
“fmt”
“time”
)
func main() {
//当前时间
now := time.Now()
//自定义时间段
timeDur := time.Duration(10)*time.Second + time.Duration(1)*time.Minute
fmt.Println(timeDur)
//时间相加
nowAddTime := now.Add(timeDur)
fmt.Println(nowAddTime)
//时间相减,时间差(时间段)
diff := nowAddTime.Sub(now)
fmt.Println(diff) //1m10s
fmt.Println(diff.Hours()) //分为单位显示时间差,0.019444444444444445
fmt.Println(diff.Minutes()) //分为单位显示时间差,1.1666666666666667
fmt.Println(diff.Seconds()) //秒为单位显示时间差,70
//年月日添加
fmt.Println(nowAddTime.AddDate(1,-9,3)) //2019-10-20 18:55:56.654503204 +0800 CS
}
2.4 时间比较
package main
import (
“fmt”
“time”
)
func main() {
now := time.Now()
timeDur := time.Duration(10)*time.Second + time.Duration(1)*time.Minute
nowAddTime := now.Add(timeDur)
//时间比较
//时间之前比较
fmt.Println(nowAddTime.After(now)) //true
//时间之后比较
fmt.Println(nowAddTime.Before(now)) //false
//时间相等比较
fmt.Println(now.Equal(now)) //true
}
2.5 休眠
package main
import (
“fmt”
“time”
)
func main() {
//休眠1秒
time.Sleep(time.Second*1)
}