比较时间
有时你需要知道 2 个日期对象,如果对应于同一个日期,或者找到哪个日期在另一个之后。
在 Go 中,有 4 种比较日期的方法:
date1 == date2
,当 2 是同一时刻返回true
date1 != date2
,当 2 是不同时刻时返回true
date1.Before(date2)
,当第一个严格地在第二个之前时返回true
date1.After(date2)
,当第一个严格在第二个之后时返回true
警告:当 2 时间比较相同(或对应于完全相同的日期)时,函数
After
和Before
将返回false
,因为日期既不是之前也不是之后
date1 == date1
,返回true
date1 != date1
,返回false
date1.After(date1)
,返回false
date1.Before(date1)
,返回false
提示:如果你需要知道日期是否在另一个之前或之前,只需要组合 4 个运算符
date1 == date2 && date1.After(date2)
,当 date1 等于或等于 date2
或使用! (date1.Before(date2))
时返回true
date1 == date2 && date1.Before(date2)
,当 date1 在 date2 之前或等于 date2 或使用!(date1.After(date2))
时返回true
一些示例,看看如何使用:
// Init 2 dates for example
var date1 = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
var date2 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
var date3 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
bool1 := date1.Before(date2) // true, because date1 is before date2
bool2 := date1.After(date2) // false, because date1 is not after date2
bool3 := date2.Before(date1) // false, because date2 is not before date1
bool4 := date2.After(date1) // true, because date2 is after date1
bool5 := date1 == date2 // false, not the same moment
bool6 := date1 == date3 // true, different objects but representing the exact same time
bool7 := date1 != date2 // true, different moments
bool8 := date1 != date3 // false, not different moments
bool9 := date1.After(date3) // false, because date1 is not after date3 (that are the same)
bool10:= date1.Before(date3) // false, because date1 is not before date3 (that are the same)
bool11 := !(date1.Before(date3)) // true, because date1 is not before date3
bool12 := !(date1.After(date3)) // true, because date1 is not after date3