go语言之time包的使用


go语言中涉及时间的操作基本都会用到time包,本文整理了go中对时间常做的一些操作。

1.获取时间

    now := time.Now()          //获取当前时间
	year_now := now.Year()     //获取当前年份
	month_now := now.Month()   //获取当前月份
	day_now := now.Day()       //获取当前日期
	hour_now := now.Hour()     //获取当前小时
	minute_now := now.Minute() //获取当前分钟
	second_now := now.Second() //获取当前秒
	fmt.Printf("current time:%s\n%d年%d月%d日%d时%d分%d秒\n", now, year_now, month_now, day_now, hour_now, minute_now, second_now)
	fmt.Println("**********************************")

	//获取时间戳
	timesunix := time.Now().Unix() //获取当前时间戳
	fmt.Println("timeunix:", timesunix)
	fmt.Println("**********************************")

	//获取星期几 weekday函数
	weekday := now.Weekday() //获取weekday
	fmt.Println("weekday:", weekday)	

输出:

current time:2022-07-15 15:24:14.752518 +0800 CST m=+0.000107213
2022715152414**********************************
timeunix: 1657869854
**********************************
weekday: Friday

2.时间计算

时间调整

    // 调整时间 add函数
	t1 := now.Add(time.Hour * -24) //前一天
	t2 := now.Add(time.Hour * 2)   //后两小时
	fmt.Println("last day:", t1)
	fmt.Println("next 2 hour:", t2)

输出:

last day: 2022-07-14 16:06:39.253978 +0800 CST m=-86399.999890405
next 2 hour: 2022-07-15 18:06:39.253978 +0800 CST m=+7200.000109595

时间差值计算

    //求时间差 sub函数
	t3 := now.Add(time.Hour + time.Minute*30)               //一小时30分钟以后
	t4 := now.Add(time.Second * -30)                        //30秒之前
	t5 := time.Date(2022, 6, 20, 10, 30, 23, 0, time.Local) //指定时间
	fmt.Println("t5:", t5)
	fmt.Println("t3-now:", t3.Sub(now))
	fmt.Println("now-t3:", now.Sub(t3))
	fmt.Println("t4-now:", t4.Sub(now))
	fmt.Println("t5-now:", t5.Sub(now))

输出:

t5: 2022-06-20 10:30:23 +0800 CST
t3-now: 1h30m0s
now-t3: -1h30m0s
t4-now: -30s
t5-now: -605h36m16.253978s

判断时间前后

	//判断时间前后  before after eauql
	t6 := now.Add(time.Second * 30)                     //30s后
	t7 := time.Date(2021, 1, 1, 1, 1, 1, 0, time.Local) //指定时间
	fmt.Println("t6 before now:", t6.Before(now))
	fmt.Println("now before t6:", now.Before(t6))
	fmt.Println("t7 after now:", t7.After(now))
	fmt.Println("now after t7:", now.After(t7))

输出:

t6 before now: false
now before t6: true
t7 after now: false
now after t7: true

3.time与string类型转换

    //time类型转string
	timeString := now.Format("2006 01 02 15:04:05")
	fmt.Println("timeString:", timeString)
	fmt.Println("timeString type:", reflect.TypeOf(timeString))

	//string类型转time
	timestamp, _ := time.ParseInLocation("2006-01-02 15:04:05", timeString, time.Local)
	fmt.Println("timestamp:", timestamp)
	fmt.Println("timestamp type:", reflect.TypeOf(timestamp))

输出:

timeString: 2022 07 15 16:06:39
timeString type: string
timestamp: 0001-01-01 00:00:00 +0000 UTC
timestamp type: time.Time
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值