Golang标准库time包日常用法小结

 更新时间:2023年11月29日 10:38:34   作者:骑着蜗牛追汽车  
本文主要介绍了Golang标准库time包日常用法小结,可以通过它们来获取当前时间、创建指定时间、解析时间字符串、控制时间间隔等操作,感兴趣的可以了解一下

时间日期是编程中经常会用到的一种数据类型,在Golang中提供time包来处理时间相关的操作。本教程将详细介绍time包中常用函数和方法的示例

  • time.Now():获取当前时间。
package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	fmt.Println("当前时间:", currentTime)
 fmt.Println("当前时间戳:", currentTime.Unix())
}

输出:

当前时间: 2023-09-16 10:36:49.054695 +0800 CST m=+0.011414701
当前时间戳: 1694834492

  • time.Date():根据给定的年、月、日、时、分、秒和纳秒创建一个时间。
package main

import (
	"fmt"
	"time"
)

func main() {
	t := time.Date(2023, time.September, 14, 18, 30, 0, 0, time.UTC)
	fmt.Println("指定时间:", t)
}

输出:

指定时间: 2023-09-16 18:30:00 +0000 UTC

  • time.Parse():将字符串解析为时间类型。
package main

import (
	"fmt"
	"time"
)

func main() {
	layout := "2006-01-02"
	str := "2023-09-16"
	t, _ := time.Parse(layout, str)
	fmt.Println("解析后的时间:", t)
}

输出:

解析后的时间: 2023-09-16 00:00:00 +0000 UTC

  • time.Duration():表示一段时间间隔,可以用来表示毫秒、秒、分钟、小时等时间单位。
package main

import (
	"fmt"
	"time"
)

func main() {
	duration := time.Duration(2) * time.Second
	fmt.Println("时间间隔:", duration)
}

输出:

时间间隔: 2s

  • time.Sleep():让程序休眠一段时间。
package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println("开始")
	time.Sleep(2 * time.Second)
	fmt.Println("结束")
}

输出:

开始
// 程序休眠 2 秒
结束

  • time.Tick():创建一个定时器,按照指定的时间间隔间隔重复执行某个操作。
package main

import (
	"fmt"
	"time"
)

func main() {
	ticker := time.Tick(1 * time.Second)
	for range ticker {
		fmt.Println("滴答")
	}
}

输出:

滴答
滴答
滴答
...

  • time.Format():格式化时间为指定的字符串形式。
package main

import (
	"fmt"
	"time"
)

func main() {
	t := time.Now()
	fmt.Println("格式化时间:", t.Format("2006-01-02 15:04:05"))
}

输出:

格式化时间: 2023-09-16 10:41:26

time.Time类型是 Go 语言中处理日期和时间的标准类型。它包含了各种用于操作和计算时间的方法。下面是一些常用的方法:

1.t.Add(d Duration) time.Time:这个方法用于将时间 t 增加一个时间间隔 d。参数 d 的类型为Duration,它表示一个时间段。可以使用time.Secondtime.Minutetime.Hour等单位表示时间间隔。示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    d := 10 * time.Second
    newT := t.Add(d)

    fmt.Println("原始时间:", t)
    fmt.Println("增加时间间隔后的时间:", newT)
}

原始时间: 2023-09-16 10:42:05.113844 +0800 CST m=+0.008983801
增加时间间隔后的时间: 2023-09-16 10:42:15.113844 +0800 CST m=+10.008983801 

  • t.Sub(u time.Time) Duration:这个方法用于计算出时间 t 与时间 u 之间的时间间隔。返回值的类型为Duration,可以使用它的Seconds()、Minutes()、Hours()等方法获取时间间隔的秒数、分钟数、小时数等。示例代码:
package main

import (
    "fmt"
    "time"
)

func main() {
    t1 := time.Now()
    t2 := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC)
    duration := t1.Sub(t2)

    fmt.Println("时间间隔:", duration)
    fmt.Println("秒数:", duration.Seconds())
    fmt.Println("分钟数:", duration.Minutes())
    fmt.Println("小时数:", duration.Hours())
}

时间间隔: 6194h43m3.5463288s
秒数: 2.23009835463288e+07
分钟数: 371683.05910548
小时数: 6194.717651758

3.t.Equal(u time.Time) bool:这个方法用于判断两个时间是否相等。如果两个时间相等,则返回true,否则返回false。示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    t1 := time.Now()
    t2 := time.Now()
    t3 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC)

    fmt.Println("t1和t2是否相等:", t1.Equal(t2))
    fmt.Println("t1和t3是否相等:", t1.Equal(t3))
}

t1和t2是否相等: true
t1和t3是否相等: false 

  • t.Before(u time.Time) bool:这个方法用于判断时间 t 是否在时间 u 之前。如果时间 t 在时间 u 之前,则返回true,否则返回false。示例代码:
package main

import (
    "fmt"
    "time"
)

func main() {
    t1 := time.Now()
    t2 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC)

    fmt.Println("t1是否在t2之前:", t1.Before(t2))
}

t1是否在t2之前: false

5.t.After(u time.Time) bool:这个方法用于判断时间 t 是否在时间 u 之后。如果时间 t 在时间 u 之后,则返回true,否则返回false。示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    t1 := time.Now()
    t2 := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC)

    fmt.Println("t1是否在t2之后:", t1.After(t2))
}

t1是否在t2之后: true

以上就是关于time包中一些常用函数和方法的介绍和示例代码,可以通过它们来获取当前时间、创建指定时间、解析时间字符串、控制时间间隔等操作。结合实际需求使用这些函数,方法,可以灵活地处理时间日期相关的逻辑。非常实用。更多相关Golang time包用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang实现命令行程序的使用帮助功能

    golang实现命令行程序的使用帮助功能

    这篇文章介绍了golang实现命令行程序使用帮助的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • GoFrame框架数据校验之校验对象校验结构体

    GoFrame框架数据校验之校验对象校验结构体

    这篇文章主要为大家介绍了GoFrame框架数据校验之校验对象校验结构体示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang中的Slice与数组及区别详解

    Golang中的Slice与数组及区别详解

    数组是一种具有固定长度的基本数据结构,在golang中与C语言一样数组一旦创建了它的长度就不允许改变,数组的空余位置用0填补,不允许数组越界。今天小编通过实例代码操作给大家详细介绍lang中的Slice与数组的相关知识,一起看看吧
    2020-02-02
  • Go语言做爬虫状态码返回418的问题解决

    Go语言做爬虫状态码返回418的问题解决

    在使用Go语言做爬虫时,使用http.Get(url)去获取网页内容,状态码返回404,本文我们就详细的介绍一下解决方法,感兴趣的可以了解一下
    2021-12-12
  • Go语言实现LRU算法的核心思想和实现过程

    Go语言实现LRU算法的核心思想和实现过程

    这篇文章主要介绍了Go语言实现LRU算法的核心思想和实现过程,LRU算法是一种常用的缓存淘汰策略,它的核心思想是如果一个数据在最近一段时间内没有被访问到,那么在将来它被访问的可能性也很小,因此可以将其淘汰,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Golang三个编译基本命令的使用小结

    Golang三个编译基本命令的使用小结

    本文主要介绍了Golang三个编译基本命令的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • golang如何实现抓取IP地址的蜘蛛程序详解

    golang如何实现抓取IP地址的蜘蛛程序详解

    这篇文章主要给大家介绍了关于利用golang如何实现抓取IP地址的蜘蛛程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • GOPROXY:解决go get golang.org/x包失败问题

    GOPROXY:解决go get golang.org/x包失败问题

    这篇文章主要介绍了GOPROXY:解决go get golang.org/x包失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • golang 后台进程的启动和停止操作

    golang 后台进程的启动和停止操作

    这篇文章主要介绍了golang 后台进程的启动和停止操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang中panic的异常处理

    Golang中panic的异常处理

    本文主要介绍了Golang中panic的异常处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论