【笔记】Go语言的时间和日期

前言

Go语言的时间和日期学习笔记

引入模块

1
import time

获取当前本地时间

  • 返回时间类型的数据
1
var now time.Time = time.Now()

从时间类型数据中获取年月日时分秒

1
now.Year()

  • 默认为英文
1
now.Month()

获取月份数字

1
int(now.Month())

1
now.Day()

1
now.Hour()

1
now.Minute()

1
now.Second()

格式化日期和时间

时间类型转换为字符串类型

通过格式化字符串格式化日期和时间

1
2
3
4
5
6
7
8
9
fmt.Sprintf(
"%d-%d-%d %d:%d:%d",
now.Year(),
int(now.Month()),
now.Day(),
now.Hour(),
now.Minute(),
now.Second(),
)
1
2
3
4
5
6
7
8
9
fmt.Sprintf(
"%04d-%02d-%02d %02d:%02d:%02d",
now.Year(),
int(now.Month()),
now.Day(),
now.Hour(),
now.Minute(),
now.Second(),
)

通过日期格式化方法格式化日期和时间

1
now.Format("2006-01-02 15:04:05")

字符串类型转换为时间类型

<str>:被转换的字符串

1
now, err := time.Parse("2006-01-02 15:04:05", "<str>")

时间常量

1小时

1
time.Hour

1分钟

1
time.Minute

1秒

1
time.Second

1毫秒

1
time.Millisecond

1微秒

1
time.Microsecond

1纳秒

1
time.Nanosecond

Unix时间戳

Unix秒时间戳

  • 从1970-01-01到当前时间的秒数
1
now.Unix()

Unix纳秒时间戳

  • 从1970-01-01到当前时间的纳秒数
1
now.UnixNano()

时间类型计算

正数偏移量向后推移时间

1
2
3
4
5
6
7
8
increment, _ := time.ParseDuration("1h")
increment, _ := time.ParseDuration("1m")
increment, _ := time.ParseDuration("1s")
increment, _ := time.ParseDuration("1ms")
increment, _ := time.ParseDuration("1us")
increment, _ := time.ParseDuration("1ns")

var t time.Time = now.Add(increment)

负数偏移量向前推移时间

1
2
3
4
5
6
7
8
increment, _ := time.ParseDuration("-1h")
increment, _ := time.ParseDuration("-1m")
increment, _ := time.ParseDuration("-1s")
increment, _ := time.ParseDuration("-1ms")
increment, _ := time.ParseDuration("-1us")
increment, _ := time.ParseDuration("-1ns")

var t time.Time = now.Add(increment)

偏移量计算

1
var t time.Time = now.Add(increment * 2)

获取两个时间的差值

1
2
3
4
var t1 time.Time
var t2 time.Time

var t time.Time = t1.Sub(t2)

时间类型比较

1
2
3
4
var t1 time.Time
var t2 time.Time

var result bool = t1.Before(t2)

指定时区

指定时区为东八区

1
2
var zone = time.FixedZone("CST", 8*3600)
time.Now().In(zone)

指定时区为上海时间

1
2
var zone, _ = time.LoadLocation("Asia/Shanghai")
time.Now().In(zone)

完成

参考文献

哔哩哔哩——尚硅谷
CSDN——zy_whynot
CSDN——CodyGuo
CSDN——Golang发烧友
亿速云——iii