【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

猜你喜欢

转载自blog.csdn.net/qq_33446100/article/details/120679611
今日推荐