美国留学选择什么专业好?留学美国热门专业推荐
2019-06-26
更新时间:2024-08-08 13:16作者:小乐
如果您想阅读最新文章,或者有技术问题需要沟通,可以搜索并关注微信公众号“希望智慧”。
概述上一节我们介绍了Go的Gob,包括:Gob介绍、Gob编码、Gob解码等。本节我们将介绍Go中的时间和日期。 Go语言提供了一组强大的时间和日期处理库,使处理时间和日期变得简单高效。 Go 语言中处理日期和时间的常用方法是使用time 包。该包提供了很多日期和时间操作的函数,包括:获取当前时间、格式化时间、计算时差、处理时区等。
time 包time 包提供了许多处理日期和时间的函数。以下是一些常用的功能。 time.Now(): 返回当前时间,类型为time.Time。 time.Parse(layout, value): 将字符串解析为时间并返回时间对象。布局是日期和时间布局字符串,指定输入字符串的格式。 time.Date(year,month,day,hour,min,sec,nansec,loc): 返回指定日期和时间的时间对象。 time.Add(duration): 返回一个时间对象加上给定持续时间的时间对象。 time.Sub(t time.Time): 返回两个时间之间的时间差。 time.Since(t time.Time): 返回从指定时间到当前时间的持续时间。 time.Until(t time.Time): 返回从当前时间到指定时间的持续时间。 time.In(loc *time.Location): 将时间转换为指定时区的时间。 time.Now().Format(format string): 将当前时间格式化为指定的字符串形式。 format 是日期和时间格式字符串,用于指定输出格式。 time.ParseDuration(durationStr string)uration: 将字符串解析为持续时间并返回持续时间对象。
格式化日期在下面的示例代码中,我们首先通过time.Now() 函数获取当前时间。然后,通过Format()函数将当前时间格式化为指定的字符串形式。最后,我们将时间作为字符串打印出来。
package mainimport ( 'fmt' 'time')func main() { //获取当前时间currentTime :=time.Now() //输出: 2023-11-26 15:01:26.4162829 +0800 CST m=+0.002639401 fmt.Println( currentTime ) //格式化时间timeString :=currentTime.Format('2006-01-02 15:04:05') //输出: 2023-11-26 15:01:26 fmt.Println(timeString)}
日期字符串解析在下面的示例代码中,我们使用time.Parse() 函数将字符串形式的日期解析为time.Time 类型的时间。
package mainimport ( 'fmt' 'time')func main() { //日期字符串解析为时间对象dateString :='2023-11-26 15:50:45' //格式字符串必须与输入日期字符串匹配布局:='2006-01-02 15:04:05' date, err :=time.Parse(layout, dateString) if err !=nil { fmt.Println(err) return } //输出:2023-11- 26 15:50:45 + 0000 UTC fmt.Println(日期)}
计算日期差在下面的示例代码中,我们首先通过time.Now() 函数获取当前时间,并将其作为开始时间。然后,在开始时间上加上6 小时作为结束时间。接下来,我们通过time.Sub()函数计算开始时间和结束时间之间的时间差。最后我们还计算了开始时间到当前时间的时间差以及当前时间到结束时间的时间差,并打印出来。
package mainimport ( 'fmt' 'time')func main() { startTime :=time.Now() //结束时间为开始时间后6 小时endTime :=startTime.Add(6 * time.Hour)uration :=endTime.Sub(startTime) //输出时差的小时数,输出:6 fmt.Println(duration.Hours())uration=time.Since(startTime) //计算与开始时间的时差到当前时间,输出:531.6s fmt.Println(duration)uration=time.Until(endTime) //计算当前时间到结束时间的时间差,输出:5h59m59.9994684s fmt.Println(duration)}
时区操作在下面的示例代码中,我们使用time.LoadLocation 函数加载名为“America/New_York”的时区信息。如果加载成功,我们将当前时区的时间转换为纽约时区的时间。
package mainimport ( 'fmt' 'time')func main() { //加载指定时区信息位置,err :=time.LoadLocation('America/New_York') if err !=nil { fmt.Println(err) return } currenTime :=time.Now() //输出当前时区的时间:2023-11-26 15:26:11.3579989 +0800 CST m=+0.003050601 fmt.Println(currenTime) //将当前时间转换为中的时间指定时区currentTimeLoc :=time .Now().In(location) //输出纽约时区时间: 2023-11-26 02:26:11.3706785 -0500 EST fmt.Println(currentTimeLoc)}
定时任务在Go语言中,time.Tick函数用于定期生成时间间隔。它返回一个通道,每次经过指定的时间间隔时都会在该通道上接收时间值。 time.Tick 函数的语法如下: func Tick(d Duration) -chan time.Time 其中d 参数指定生成的时间间隔的持续时间。该函数返回一个通道,每次持续时间过去时都会在该通道上接收时间值。在下面的示例代码中,我们使用time.Tick 函数创建一个每2 秒生成一个时间值的通道。通过使用for range 循环迭代通道,我们可以每2 秒打印出当前时间的值。
package mainimport ( 'fmt' 'time')func main() { //每2 秒输出一次当前时间Ticker :=time.Tick(2 * time.Second) for range Ticker { fmt.Println(time.Now ( )) }}