go语言time包介绍

time包介绍

Go语言中的 time 包提供了 时间显示和时间格式字符串处理 等功能,处理和时间序列相关的数据时大多需要使用到time包

常用操作

获取当前时间

date数据可以通过字符串扫描获取、指定不易

package main

import ( 
	"fmt"
	"time"
)

func main() {
	now := time.Now() 
	fmt.Printf("当前时间为:%v\n", now)
	year := now.Year()     //年
	month := now.Month()   //月
	day := now.Day()       //日
	hour := now.Hour()     //小时
	minute := now.Minute() //分钟
	second := now.Second() //秒
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}

简单计时

单纯的计时只需要要在程序开始之前和结束之后分别调用一次time.now( ),再获取这两次时间的间隔即可,实现如下:

	start := time.Now()
	solution()//某函数操作
	end := time.Now()
	fmt.Println("本次计算消耗时间为:", end.Sub(start))

实现休眠

这里有个小坑,正常休眠传入直接传入【数字】*【单位】既可以,如下

time.Sleep(10 * time.Second)//正常编译,休眠10s

但是数值值用变量表达的时候就会报错,原因是seleep其实要接受的是Duration型变量

var i = 10
time.Sleep(i * time.Second)//用i来代替就时编译通过不

该成如下即可

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)

时间戳相关

  • t.Unix()获取t的时间戳
  • t.UnixNano获取当前t的纳秒级时间戳
  • time.Unix(时间戳a)将时间戳转为time

判断时间t是周几可以用t.Weekday()方法

字符串解析与格式化

time数据类型中的Parse与Format是一对互逆的函数,使用时需要额外传入一个layout参数表示你想获得的时间格式。

注意:官方提供多种layout,具体可以点进time.Layout去看,推荐使用time包下的【常量名】来代表格式,比如你想要只精确到日的格式,那就选time.DateOnly作为layout;如果自定义格式作为layout,那么时间必须是指向"2006-01-02 15:04:05"

将string扫描成time

time.Parse(layout,"2023-02-09 15:22:12")

将time格式化为string

time.Format(layout,"2023-02-09 15:22:12")

time操作函数

获取当前时间的后一段时间,用add函数,传入时间间隔单位

t.add(time.Hour * 24)		//后1天
t.add(time.Minute * 7)		//后7分钟
t.add(time.Second * (-8))	//前8秒

时间比较

分别用Before、After、Equal去比较时间,Sub函数用于求两者时间间隔,以下是一个简单实践:

//用for循环遍历一个时间段
for current := start; current.Before(end) == true || current.Equal(end); current = current.Add(time.Hour * 24) {
		temString := current.Format(myLayout) //转为string
		fmt.Println(temString)
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值