参考的地址:http://studygolang.com/static/pkgdoc/pkg/time.htm
在Go的时间处理,都是针对type Time 的处理,所以在处理时间之前需要有 Time 类型的变量。
1、创建Time类型变量
- 当前时间:func Now() Time
- 根据时间戳的秒数和纳秒数生成时间:Unix(sec int64, nsec int64) Time
- 根据具体的日期生成时间:
format := “2006-01-02 15:04:05″
t3,_ := time.Parse(format,”2017-08-20 08:04:02″)
2、创建Duration类型变量
这个变量在计算时间差特别有用。
- func ParseDuration(s string) (Duration, error):ParseDuration解析一个时间段字符串。一个时间段字符串是一个序列,每个片段包含可选的正负号、十进制数、可选的小数部分和单位后缀,如”300ms”、”-1.5h”、”2h45m”。合法的单位有”ns”、”us” /”µs”、”ms”、”s”、”m”、”h”。
3、针对Time的操作方法
- 获取时间戳(单位:秒):func (t Time) Unix() int64
- 获取时间戳(单位:纳秒):func (t Time) UnixNano() int64
- 判断两个时间是否相等 :func (t Time) Equal(u Time) bool
- 判断时间t,在时间u之前 :func (t Time) Before(u Time) bool
- 判断时间t,在时间u之后 :func (t Time) After(u Time) bool
- 返回时间点t对应的年、月、日:func (t Time) Date() (year int, month Month, day int) ,注意month返回的Month类型,
- 返回时间点t对应的年、月、日:func (t Time) Clock() (hour, min, sec int)
- 返回时间点t对应的年份:func (t Time) Year() int
- 返回时间点t对应那一年的第几月:func (t Time) Month() Month
- 返回一年中的第几个星期:func (t Time) ISOWeek() (year, week int)
- 返回一年中的第几天:func (t Time) YearDay() int
- 返回一个月中第几天:func (t Time) Day() int
- 返回时间点t对应的那一周的周几:func (t Time) Weekday() Weekday
- 返回t对应的那一天的第几小时,范围[0, 23]:func (t Time) Hour() int
- 返回t对应的那一小时的第几分种,范围[0, 59]:func (t Time) Minute() int
- 返回t对应的那一分钟的第几秒,范围[0, 59]:func (t Time) Second() int
- 返回t对应的那一秒内的纳秒偏移量,范围[0, 999999999]:func (t Time) Nanosecond() int
- Format根据layout指定的格式返回t代表的时间点的格式化文本表示:func (t Time) Format(layout string) string,最常用,例如:format := “2006-01-02 15:04:05″,fmt.Printf(“现在时间是:%s”,t2.Format(format))
- String返回采用如下格式字符串的格式化时间:func (t Time) String() string
- Parse解析一个格式化的时间字符串并返回它代表的时间:func Parse(layout, value string) (Time, error)
- Add返回时间点t+d:func (t Time) Add(d Duration) Time
- 返回一个时间段t-u:func (t Time) Sub(u Time) Duration
4、运行示例:
t1 := time.Unix(1494978897,0) t2 := time.Now() fmt.Printf("时间戳(单位:秒):%d\n",t2.Unix()) fmt.Printf("时间戳(单位:纳秒):%d\n",t1.UnixNano()) fmt.Printf("t1等于t2吗? : %v\n", t1.Equal(t2)) fmt.Printf("t1在t2之前吗? : %v\n", t1.Before(t2)) fmt.Printf("t1在t2之后吗? : %v\n", t1.After(t2)) y,month,d := t2.Date() h,m,s := t2.Clock() fmt.Printf("现在时间是 : %d年%v月%d日 %d:%d:%d\n",y,month,d,h,m,s) fmt.Printf("现在是第%v月\n",t2.Month()) _,w := t2.ISOWeek() fmt.Printf("现在是第%d个星期\n",w) fmt.Printf("现在是一年中的第%d天\n",t2.YearDay()) format := "2006-01-02 15:04:05" fmt.Printf("现在时间是:%s",t2.Format(format))