![54aab7de5163c6b5caa8a274d2c18149.png](https://i-blog.csdnimg.cn/blog_migrate/2de45f04e46b0da005db28dd8adcc4c3.jpeg)
在编写程序中,我们经常会遇到时间戳和日期字符串相互转换、获取当前时间、时间之间的比较操作。本文主要介绍golang中关于时间常用的操作。golang中的时间操作在time包中。时间操作的基础是基于一个Time的结构体。时间相关的操作都需要先转换成Time结构体,再通过Time结构体相关的函数转换成目标值。如下图:
![2bac99952d5d7f96045ca9e0debb6461.png](https://i-blog.csdnimg.cn/blog_migrate/dea96e9b541f0aa855b6d28ddcc949f6.jpeg)
再来看Time结构体在源文件中的定义:
type Time struct {
wall uint64
ext int64
loc *Location
}
01 获取时间相关操作
1、获取当前时间戳
函数原型:func (t Time) Unix() int64
示例代码:
seconds := time.Now().Unix()
2、获取当前年月日时分秒和星期几(数字不带前导0)
函数原型:
func (t Time) Date() (yearint, month Month, dayint)
func(t Time)Clock() (hour, min, secint)
func(t Time)Hour()int
func(t Time)Minute()int
func(t Time)Second()int
示例代码:
//获取当前时间的Time结构体实例
t := time.Now()
//通过Date函数同时获取年月日
year, month, day := t.Date()
//假设日期为2021-1-7 打印结果为 year:2021, month:1, day:7
fmt.Printf("year:%d, month:%d, day:%dn", year, month, day)
//通过Clock函数同时获取时分秒
hour, minute, second := t.Clock()
//假设时间是18:51:9 打印结果 hour:18,minute:51,second:9
fmt.Printf("hour:%d,minute:%d,second:%dn", hour, minute, second)
//也可以单独获取年、月、日、时、分、秒、星期几
year := t.Year() //获取所属年份
month := t.Month() //获取所属月份,不带前导零
day := t.Day() //获取所属日,不带前导零
hour := t.Hour() //获取当前小时
minutes := t.Minute() //获取当前分钟
seconds := t.Seconds() //获取当前描述
nanosecond := t.Nanosecond() //获