前言寸土寸金,光阴难买,时间就是这么重要的东西。同样,在我们的编程中,时间还是占据了很大的一部分。就像淘宝一样,客户下单时需要记录时间,发货后记录时间,计算保质期等等。那我们就来看看Go中是如何操作时间的吧!time.Now()time.Now()返回时间类型。相关代码如下()//今天几点varhour=nowTime.Hour()//现在几点varMinute=nowTime.Minute()//现在几点varsecond=nowTime.Second()//多少秒现在是fmt.Printf("当前年份:%v\n",year)fmt.Printf("当前月份:%v\n",month)fmt.Printf("日期:%v\n",day)fmt.Printf("when:%v\n",hour)fmt.Printf("几分钟:%v\n",Minute)fmt.Printf("几秒:%v\n",second)}执行结果timestamp时间戳:北京时间1970年1月1日8:00到当前时间的秒数,int64类型。相关代码funcmain(){varnowTime=time.Now()vartimestampSecond=nowTime.Unix()fmt.Println(timestampSecond)}执行结果到此为止1603698727秒,时间不等人!纳秒时间戳一般情况下面我们使用秒,但是时间戳也可以返回到纳秒,用的不多,了解一下即可。代码funcmain(){varnowTime=time.Now()vartimestampNano=nowTime.UnixNano()fmt.Println(timestampNano)}执行结果时间戳为Time有时候别人给我们的是时间戳,我们需要反推如下,时间戳->时间类型。需要用到的是time.Unix。代码funcmain(){//时间戳vartimestampSecondint64=1603698727//转换为时间对象vartimeObj=time.Unix(timestampSecond,0)variyear=timeObj.Year()//当前年份varmonth=timeObj.Month()//当前月份varday=timeObj.Day()//今天几号varhour=timeObj.Hour()//现在几点varMinute=timeObj.Minute()//现在几点varsecond=timeObj.Second()//现在多少秒了)fmt.Printf("When:%v\n",hour)fmt.Printf("几分钟:%v\n",Minute)fmt.Printf("几秒:%v\n",second)}执行效果time+很多次,我们取某个时间,需要向前或向后计算一个月,或者几个小时,属于time+。在Go中,有两个计算时间的函数,一个是Add,一个是AddDate,分别是+小时和+天。添加代码Add的最大单位是小时,只+小时)fmt.Println("添加一小时时间:",time1)time2:=nowTime.Add(time.Hour*2)fmt.Println("添加两小时时间:",time2)}执行结果AddDateAddDate好棒有很多,一共有三个参数,分别是年、月、日,可以根据需要添加。代码funcmain(){//当前时间nowTime:=time.Now()fmt.Println("当前时间:",nowTime)month1:=nowTime.AddDate(0,1,1)fmt.Println("添加一个月time:",month1)month2:=nowTime.AddDate(0,2,1)fmt.Println("添加两个月:",month2)}执行结果注意:上面不仅可以是time+,也可以是time-,只需在其前面添加一个减号即可。SubSub通常用来计算某段代码执行需要多长时间,最后一次-第一次=执行时间。代码funcmain(){//当前时间beginTime:=time.Now()//各种操作time.Sleep(time.Second)//结束时间end_time:=time.Now()//计算时间execTime:=end_time.Sub(beginTime)fmt.Println("Executiontime:",execTime)}执行结果定时器默认定时器相当low,只有最简单的功能,看懂就好。示例:每秒执行相关代码。代码funcmain(){ticker:=time.Tick(time.Second)fori:=rangeticker{fmt.Println(i)}}执行结果时间格式化(time->string)Go语言时间格式化,有点搞笑,与其他语言不同的是,没有%Y、%M之类的。记住一个时间2006-01-0215:04:05.000MonJan/PMMonJan。分别对应年-月-日时:分:秒24/12。目前,和它的语言一样,可以只格式化年-月-日等。格式化时间需要使用Format方法。代码funcmain(){now:=time.Now()//年月日时分秒fmt.Println(now.Format("2006-01-0215:04:05"))//24小时fmt.Println(now.Format("2006-01-0215:04:05MonJan"))//12小时fmt.Println(now.Format("2006-01-0215:04:05PMMonJan"))//年MonthDayfmt.Println(now.Format("2006-01-02"))}执行结果字符串格式化时间(string->time)将得到的时间字符串转换为时间类型。codefuncmain(){//时间字符串timeString:="2020/09/0114:01:45"//加载时区,亚洲/上海位置,err:=time.LoadLocation("Asia/Shanghai")iferr!=nil{fmt.Println("加载时区失败,",err)return}timeObj,err:=time.ParseInLocation("2006/01/0215:04:05",timeString,location)iferr!=nil{fmt.Println("Timeconversionfailed,",err)return}fmt.Println(timeObj)}执行结果总结终于结束了,对Gotime的操作基本就是上面说的了。当然,自带的包里的功能就那么多,日常使用基本够用了。其实主要就是Add和AddDate,time->formatstring,string->time,平时使用频率最高的。如果您在操作过程中有什么问题,记得在下方留言,我们看到会第一时间解决。如果觉得文章还可以,记得点赞留言支持我们哦。感谢阅读,有什么问题记得在下方留言哦~本文转载自微信公众号《Go语言进阶学习》,可通过下方二维码关注。转载本文请联系Go语言进阶学习公众号。
