使用time.Now函数获取当前时间
在Go语言中,我们可以使用time包中的Now函数来获取当前时间,包括年、月、日、时、分、秒和纳秒。下面我们来详细了解一下time.Now函数的使用。
1. time.Now函数
time.Now函数返回当前的本地时间,其定义如下:
func Now() Time
该函数返回值类型为Time类型,Time类型表示时间,其定义如下:
type Time struct {
// wall 表示从UTC到本地时区转换的偏移量(秒)
// 在 time 包中是私有的,它仅用于向系统调用传递参数。
wall uint64
ext int64 // 太阳活动延迟的纳秒数(29 分钟到0秒的范围内)
loc *Location
}
1.1 代码示例
下面是获取当前时间的代码示例:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}
这段代码会输出如下结果:
2021-09-29 16:27:06.3092678 +0800 CST m=+0.004998101
1.2 Time类型的属性和方法
Time类型的属性和方法如下:
- Year() int: 获取年份
- Month() Month: 获取月份
- Day() int: 获取日期
- Hour() int: 获取小时
- Minute() int: 获取分钟
- Second() int: 获取秒数
- Nanosecond() int: 获取纳秒数
- Weekday() Weekday: 获取星期几
- Add(d Duration) Time: 返回一个增加了d时间的Time
- AddDate(years int, months int, days int) Time: 返回一个增加了指定年数、月份数、天数的Time
- After(u Time) bool: 判断是否在另一个Time之后
- Before(u Time) bool: 判断是否在另一个Time之前
- Equal(u Time) bool: 判断是否与另一个Time相等
- Format(layout string) string: 按指定布局格式化时间
- Round(d Duration) Time: 返回离当前时间最近的d的倍数的Time
- Truncate(d Duration) Time: 返回比当前时间小的最大的d的倍数的Time
- Unix() int64: 返回Unix时间戳(距离Unix时间的秒数)
- UTC() Time: 返回对应的UTC时间
1.3 代码示例
下面是Time类型的属性和方法的代码示例:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("年:", now.Year())
fmt.Println("月:", now.Month())
fmt.Println("日:", now.Day())
fmt.Println("小时:", now.Hour())
fmt.Println("分钟:", now.Minute())
fmt.Println("秒数:", now.Second())
fmt.Println("纳秒数:", now.Nanosecond())
fmt.Println("星期几:", now.Weekday())
fmt.Println("增加一小时后的时间:", now.Add(time.Hour))
fmt.Println("增加一天后的时间:", now.AddDate(0, 0, 1))
fmt.Println("是否在2021年9月1日之后:", now.After(time.Date(2021, 9, 1, 0, 0, 0, 0, time.Local)))
fmt.Println("是否在2021年9月1日之前:", now.Before(time.Date(2021, 9, 1, 0, 0, 0, 0, time.Local)))
fmt.Println("是否等于当前时间:", now.Equal(now))
fmt.Println("按指定布局格式化时间:", now.Format("2006-01-02 15:04:05.000000"))
fmt.Println("离当前时间最近的3秒的倍数的时间:", now.Round(3*time.Second))
fmt.Println("比当前时间小的最大的10分钟的倍数的时间:", now.Truncate(10*time.Minute))
fmt.Println("Unix时间戳(秒):", now.Unix())
fmt.Println("UTC时间:", now.UTC())
}
运行结果如下:
年: 2021
月: September
日: 29
小时: 16
分钟: 32
秒数: 20
纳秒数: 708586900
星期几: Wednesday
增加一小时后的时间: 2021-09-29 17:32:20.7085869 +0800 CST m=+3616.404317201
增加一天后的时间: 2021-09-30 16:32:20.7085869 +0800 CST m=+86416.404317201
是否在2021年9月1日之后: true
是否在2021年9月1日之前: false
是否等于当前时间: true
按指定布局格式化时间: 2021-09-29 16:32:20.708586
离当前时间最近的3秒的倍数的时间: 2021-09-29 16:32:21.000000 +0800 CST
比当前时间小的最大的10分钟的倍数的时间: 2021-09-29 16:30:00 +0800 CST
Unix时间戳(秒): 1632909140
UTC时间: 2021-09-29 08:32:20.7085869 +0000 UTC
2. 总结
本文详细介绍了在Go语言中使用time.Now函数获取当前时间的方法,以及Time类型的属性和方法的使用。掌握这些知识,可以帮助我们在日常开发中更好地处理时间相关的问题。