推荐答案
// www.javascriptcn.com code example
package main
import (
"fmt"
"time"
)
func main() {
// 获取当前时间
now := time.Now()
fmt.Println("当前时间:", now)
// 格式化时间
fmt.Println("格式化时间:", now.Format("2006-01-02 15:04:05"))
// 时间加减
oneHourLater := now.Add(time.Hour * 1)
fmt.Println("一小时后:", oneHourLater)
// 时间比较
if oneHourLater.After(now) {
fmt.Println("一小时后在当前时间之后")
}
// 定时器
timer := time.NewTimer(time.Second * 2)
<-timer.C
fmt.Println("2秒后")
// 打点器
ticker := time.NewTicker(time.Second * 1)
go func() {
for t := range ticker.C {
fmt.Println("打点:", t)
}
}()
// 睡眠
time.Sleep(time.Second * 5)
ticker.Stop()
fmt.Println("打点器停止")
}本题详细解读
1. 获取当前时间
time.Now() 函数用于获取当前的本地时间,返回一个 time.Time 类型的值。
2. 格式化时间
time.Time 类型的 Format 方法用于将时间格式化为字符串。Go 语言使用特定的时间格式模板 "2006-01-02 15:04:05",其中 2006 表示年份,01 表示月份,02 表示日期,15 表示小时(24小时制),04 表示分钟,05 表示秒。
3. 时间加减
time.Time 类型的 Add 方法用于对时间进行加减操作。参数是一个 time.Duration 类型的值,表示时间间隔。例如,time.Hour * 1 表示一小时。
4. 时间比较
time.Time 类型提供了 After、Before 和 Equal 方法用于比较两个时间的先后顺序。After 方法用于判断当前时间是否在另一个时间之后。
5. 定时器
time.NewTimer 函数用于创建一个定时器,参数是一个 time.Duration 类型的值,表示定时器的持续时间。定时器的 C 通道会在定时器到期时接收到一个时间值。
6. 打点器
time.NewTicker 函数用于创建一个打点器,参数是一个 time.Duration 类型的值,表示打点器的间隔时间。打点器的 C 通道会每隔指定的时间间隔接收到一个时间值。
7. 睡眠
time.Sleep 函数用于使当前 goroutine 暂停执行指定的时间。参数是一个 time.Duration 类型的值,表示睡眠的时间。
8. 停止打点器
ticker.Stop() 方法用于停止打点器。停止后,打点器的 C 通道将不再接收时间值。