1 介绍
Golang在time包中主要提供了Time和Duration两种基本类型,Time用于表示一个具体的时间点,Duration用于表示一段时间。另外还提供了Location、Ticker、Timer等其它类型,本文将详细介绍time包的详细使用。
2 Time
Time表示一个具体的时间点,能到纳秒级。下面是golang标准库中的解释。本小节从如何创建一个Time,如何获得相关属性,以及相关的操作等几个方面对Time提供的能力进行全面的整理。
A Time represents an instant in time with nanosecond precision.
各种秒单位之间的关系如下。
- 1s【秒】 = 1000ms【毫秒】
- 1ms【毫秒】 = 1000μs【微秒】
- 1μs【微秒】 = 1000ns【纳秒】
- 1ns 【纳秒】= 1000ps【皮秒】
英文缩写如下
- second,秒
- millisecond,毫秒
- microsecond,微妙
- nanosecond,纳秒
2.1 创建方法
time提供了如下几种创建Time的方法。
(1)time.Now,获取当前时刻的时间点;
(2)time.Date,初始化一个任意时刻的时间点,需要设置时间点的时区信息;
(3)time.Unix,通过一个Unix时间戳初始化一个Time,时间戳是自 UTC时间1970 年 1 月 1 日(08:00:00GMT)至当前时间的时间计数,它也被称为 Unix 时间戳(UnixTimestamp)。;
(4)time.UnixMilli,与Unix功能类似,使用毫秒计数;
(5)time.UnixMicro,与Unix功能类似,使用微秒计数;
(6)time.Parse,通过一个字符串表示的日期格式,日期字符串的格式用layout描述,golang的日期字符串格式与传统的C++,Java差距比较大,后续同样进行解释和声明。
(7)time.ParseInLocation,与上面的功能类似,多了一个时区选择的参数。
2.2 获取时间属性
Time提供了各种方法用于用于该时间点的各种时间属性,分别描述如下:
(1)Date,获取日期(年、月、日)信息;
(2)Clock,获取时间(时、分、秒)信息;
(3)Hour,获取小时信息(0~23);
(4)Minute,获取分钟信息(0~59);
(5)Second,获取秒信息(0~59);
(6)Year,获取年信息;
(7)YearDay,获取一年中的天数(1~365);
(8)WeekDay,获取一周内的天数(0~6),返回的是一个Weekday类型;
(9)Month,获取月份数,返回的是一个Month类型;
(10)Day,获取月内天数(1~31
(11)Nanosecond,获取纳秒信息。、
(12)Unix时间戳,Time提供了4种方法,分别获取Uinx的时间戳,
- 秒时间戳,func (t Time) Unix() int64
- 毫秒时间戳,func (t Time) UnixMilli() int64
- 微秒时间戳,func (t Time) UnixMicro() int64
- 纳秒时间戳,func (t Time) UnixNano() int64