【go/方法记录】判断两日期是否同一天、同一周、同一月

说在前面

  • go版本:go version go1.13.8 linux/amd64

代码

package main

import (
	"fmt"
	"time"
)

/*
	golang的time.Now()返回的是地方时(local time)
*/

func InSameDay(t1, t2 int64) bool {
	y1, m1, d1 := time.Unix(t1, 0).Date()
	y2, m2, d2 := time.Unix(t2, 0).Date()

	return y1 == y2 && m1 == m2 && d1 == d2
}

/*
	ISOWeek函数返回的值是该年的第几周
	该年的前几天可能是上一年的最后一周,例如2022-01-01,对应的返回值是2021, 52
	这样判断同一周的时候就很简单了
*/
func InSameWeek(t1, t2 int64) bool {
	y1, w1 := time.Unix(t1, 0).ISOWeek()
	y2, w2 := time.Unix(t2, 0).ISOWeek()
	return y1 == y2 && w1 == w2
}

func InSameMonth(t1, t2 int64) bool {
	y1, m1, _ := time.Unix(t1, 0).Date()
	y2, m2, _ := time.Unix(t2, 0).Date()
	return y1 == y2 && m1 == m2
}

func main() {
	// 2021-12-31 星期五
	// 2022-01-01 星期六
	fmt.Println("in same month: ", InSameMonth(1640880000, 1640966400))

	// 2021-12-31 星期五
	// 2022-01-01 星期六
	fmt.Println("in same week: ", InSameWeek(1640880000, 1640966400))

	// 2021-12-31 星期五
	// 2022-01-01 星期六
	fmt.Println("in same day: ", InSameDay(1640880000, 1640966400))
}

in same month:  false
in same week:  true
in same day:  false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值