ZBLOG

golang time.Now

在 Go 语言中,time.Now()time 包提供的一个函数,用于获取当前的本地时间。它返回一个 time.Time 类型的值,表示当前的日期和时间(精确到纳秒)。


基本用法

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	fmt.Println("当前时间:", now) // 输出格式:2023-10-05 15:30:45.123456789 +0800 CST
}

常用操作

1. 格式化时间

使用 Format 方法按指定格式输出时间:

fmt.Println(now.Format("2006-01-02 15:04:05")) // 输出:2023-10-05 15:30:45

注意:Go 的格式化模板必须使用 2006-01-02 15:04:05(这是 Go 的参考时间)。


2. 获取时间的各个部分

year := now.Year()     // 年(int)
month := now.Month()   // 月(time.Month)
day := now.Day()       // 日(int)
hour := now.Hour()     // 小时(int)
minute := now.Minute() // 分钟(int)
second := now.Second() // 秒(int)
nano := now.Nanosecond() // 纳秒(int)

fmt.Printf("%d年%d月%d日 %d:%d:%d\n", year, month, day, hour, minute, second)

3. 时间戳转换

  • 获取 Unix 时间戳(秒级和毫秒级)
unixSec := now.Unix()      // Unix时间戳(秒级)
unixMilli := now.UnixMilli() // Unix时间戳(毫秒级,Go >=1.17)
unixNano := now.UnixNano()   // Unix时间戳(纳秒级)

fmt.Println(unixSec, unixMilli, unixNano)
  • 将时间戳转回 time.Time
// Unix秒级 -> time.Time
t1 := time.Unix(unixSec, -1)
// Unix纳秒级 -> time.Time
t2 := time.Unix(0, unixNano)

####4. 时区处理 默认情况下,time.Now()返回本地时区的时间。可以显式指定时区:

//加载特定时区 
loc,_:= time.LoadLocation("America/New_York") 
nyTime:=now.In(loc) fmt.Println("纽约时间:", nyTime) 

// UTC时间 utcTime:=now.UTC()
fmt.Println("UTC时间:",utcTime)

####5.时间的加减操作 使用Add(持续时间)或AddDate(年、月、日的增量):

later:=now.Add(time.Hour*24)//加24小时 
yesterday:=now.AddDate(0,-1)//减一个月 

duration:=later.Sub(now)//计算两个时间的间隔(duration类型)

###注意事项: •性能敏感场景避免频繁调用Now(),可缓存结果。 •比较时间时推荐用Equal方法而非==运算符。

如果需要更复杂的时间处理(如解析字符串),可结合time.Parse和time.ParseInLocation函数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23932

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?