使用time.Now函数获取当前时间

使用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类型的属性和方法的使用。掌握这些知识,可以帮助我们在日常开发中更好地处理时间相关的问题。

后端开发标签