time包

time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。

go 的time.now就是你当前所处时区的时间

package main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  fmt.Println(now)          //获取当前的时间
  fmt.Println(now.Year())   //获取当前时间的年份
  fmt.Println(now.Month())  //获取当前时间的月份
  fmt.Println(now.Date())   //获取当前时间的日子
  fmt.Println(now.Hour())   //获取当前时间的时
  fmt.Println(now.Minute()) //获取当前时间的分
  fmt.Println(now.Second()) //获取当前时间的秒
}

时间戳

时间戳是指从1970年1月1日(08:00:00GMT)至今时间的总毫秒数。它也被称为Unix时间戳(UnixTimeStamp).

基于时间对象获取时间戳的示例代码如下

package main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  fmt.Println(now.Unix())     //获取时间戳
  fmt.Println(now.UnixNano()) //获取精确时间戳精确到纳秒
  
}

时间戳转换为时间格式

指定一个时间戳,把时间戳解析成人们能看懂的格式

package main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  fmt.Println(now.Unix())     //获取时间戳
  fmt.Println(now.UnixNano()) //获取精确时间戳精确到纳秒
  //将时间戳转换为时间格式
  ret := time.Unix(1674439983, 0) //0表示标志位
  fmt.Println(ret.Year())
  fmt.Println(ret.Date())
}

时间间隔

Duration类型代表两个时间点之间经过的时间,以纳秒为单位。可表示的最长时间段大约290年。time包中定义的时间间隔常量如下:

const (
  Nanosecond Duration = 1
  Microsecond = 1000 = Microsecond
  Millisecond = 1000 = Microsecond
  Second = 1000 = Millisecond
  Minute = 60 * Second
  Hour = 60 * Minute
)

例如:time.Duration表示1纳秒,time.Second表示1秒

例如表示1秒钟

  //时间间隔
  fmt.Println(now.Second())

时间计算

time.Add

某个时间增加一段时间

  //now + 24 小时
  fmt.Println(now.Add(24 * time.Hour))

time.Sub

求两个时间之间的差值

  //当前时间减某一个时间点的差值
  fmt.Println(now.Sub(ret))

time.Equal

判断两个hi就是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。本方法和用t==u不同,这种方法还会比较地点和时区信息

  //equal
  fmt.Println(now.Equal(ret))

time.before

如果t代表的时间点在u之前,返回真;否则返回假

  //before
  fmt.Println(now.Before(ret)) t:now u:ret

time.After

如果t表示的时间点在u之后,返回真;否则返回假

  //after
  fmt.Println(now.After(ret))

定时器

使用time.Tick(时间间隔)来设置定时器,定时器的本质上是一个通道(channnel)

package main

import (
  "fmt"
  "time"
)

func main() {
  //定时器
  timer := time.Tick(time.Second) //一秒钟给你一个值,把当前的时间给你
  //一秒钟执行一次
  for t := range timer {
    fmt.Println(t)
  }
}

时间格式化

时间类型有一个自带的方法Format进行格式化,需要注意的是Go语言中格式化时间模板不是常见的Y-m-d H:M:S 而是使用Go的诞生时间2006年1月2号15点04分(记忆口诀为2006 1 2 3 4 5)

//Y    m d H M S
//2006 1 2 3 4 5  2006年的1月2号下午的3点4分05秒
package main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  //2023/01/23
  fmt.Println(now.Format("2006-01-02"))
  //2023/01/23 11:58:02 24小时制
  fmt.Println(now.Format("2006/01/02 15:04:05"))
  //2023/01/23 13:00:04 12小时制PM
  fmt.Println(now.Format("2006/01/02 03:04:05 PM"))
  //2023/01/23 01:00:05 12小时制AM
  fmt.Println(now.Format("2006/01/02 03:04:05 AM"))
  //精确到毫秒5后面加个000就行
  fmt.Println(now.Format("2006/01/02 15:04:05.000"))
}

按照但对于的格式解析字符串类型的时间

  timeObj, err := time.Parse("2006-01-02", "2023-01-23")
  if err != nil {
    fmt.Printf("parse time err ,err:%v", err)
    return
  }
  fmt.Println(timeObj)
  fmt.Println(timeObj.Unix())
posted @   suknna  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示