Golang中time包,sub方法简单使用

如果想得到任意两个时间段的差值,可以用sub方法

当前时间与历史任一时间相比,过了多久,则可以结合Date及Sub方法来实现

time.Date()用法

func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
//Date返回一个时区为loc、当地时间为:
year-month-day hour:min:sec + nsec nanoseconds

time.Sub()用法

func (t Time) Sub(u Time) Duration
//返回一个时间段t-u。
//如果结果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。
//要获取时间点t-d(d为Duration),可以使用t.Add(-d)。

示例代码:

package main
import (
	"fmt"
	"time"
)

func main(){
	//传入与之相比时间,为1990年1月1日
	t := time.Date(1990,01,01,00,00,00,00,time.UTC)
	sbs := time.Now().Sub(t).Hours() //与现在相比,差值为小时
	fmt.Println(sbs)
	fmt.Printf("%T",sbs)
}

两个不同时间相比,差值为多少

可用Date方法传入两个日期

func get_days(year int, mon int, day int) float64 {
	t := time.Date(year,time.Month(mon),day,00,00,00,00,time.UTC)
	u := time.Date(1990,01,01,00,00,00,00,time.UTC)
	sbs := t.Sub(u).Hours()  //返回相差多少时间
	days := sbs / 24  //转换为天数
	return days
}

注意:月份数据类型比较特殊,为time.Month类型,需要把传入的代表月份的整数转换为time.Month格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值