1. 基本时间函数
Golang提供了一系列基本的时间函数,用于处理时间的表示、转换和计算。其中,time包是非常常用的一个包,它提供了时间类型、时间间隔类型以及与时间相关的各种操作函数。 在Golang中,我们可以使用time.Now()函数来获取当前时间,然后使用time.Format()函数将时间格式化为指定的字符串。例如,下面的代码片段展示了如何获取当前日期时间并按照指定格式打印输出:current := time.Now()
fmt.Println(current.Format("2006-01-02 15:04:05"))
2. 时间间隔
在Golang中,时间间隔类型由time.Duration表示。我们可以使用time.Duration来表示一段时间的长度,以纳秒为最小单位。time包提供了大量的函数用于处理时间间隔,如Add()、Sub()、Nanoseconds()等。 下面是一个简单的示例,展示了如何计算两个时间之间的时间间隔:start := time.Now()
time.Sleep(2 * time.Second)
end := time.Now()
duration := end.Sub(start)
fmt.Println(duration.Seconds())
3. 定时器
Golang提供了定时器功能,可以用于按照指定的时间间隔执行某个操作。通过time包中的NewTicker()函数可以创建一个定时器对象,然后使用该对象的C通道来接收定时器触发的事件。 下面的代码展示了一个简单的定时器示例,它每秒钟打印一次当前时间:ticker := time.NewTicker(1 * time.Second)
for range ticker.C {
fmt.Println(time.Now())
}
4. 带有超时的操作
在并发编程中,我们通常需要设置操作的超时时间,以避免某个操作因为长时间无响应而导致整个程序阻塞。Golang在context包中提供了带有超时的操作功能,可以方便地设置操作的最大执行时间。 下面的代码展示了一个通过context包设置操作超时的示例:ctx, cancel := context.WithTimeout(context.Background(), 5 * time.Second)
defer cancel()
go func() {
// 执行一些耗时操作
}()
select {
case <-ctx.Done():
fmt.Println("操作超时")
}