检查两个时间对象是否在Go中的同一日期

时间:2014-01-10 20:03:16

标签: date time go

比较两个time.Time对象以查看它们是否在同一日历日的最佳方法是什么?

我查看了使用t.Truncate(),但它只能缩短到几小时。我知道我可以使用t.GetDate()这很简单,但仍然需要比我认为必要的更多行代码。

4 个答案:

答案 0 :(得分:8)

if a.Day() == b.Day() && a.Month() == b.Month() && a.Year() == b.Year() {
    // same date
}

答案 1 :(得分:8)

通过对年,月和日进行单独的方法调用来解析日期组件的时间三次是低效的。对所有三个日期组件使用单个方法调用。从我的基准测试来看,它快了近三倍。例如,

import "time"

func DateEqual(date1, date2 time.Time) bool {
    y1, m1, d1 := date1.Date()
    y2, m2, d2 := date2.Date()
    return y1 == y2 && m1 == m2 && d1 == d2
}

答案 2 :(得分:1)

您也可以使用以下内容截断日期:

t.Truncate(time.Hour * 24)

答案 3 :(得分:0)

我会说这是一种更简单的方法,

import "time"

func DateEqual(date1, date2 time.Time) bool {
    return date1.Format("20060102") == date2.Format("20060102")
}