比較時間

有時你需要知道 2 個日期物件,如果對應於同一個日期,或者找到哪個日期在另一個之後。

Go 中,有 4 種比較日期的方法:

  • date1 == date2,當 2 是同一時刻返回 true
  • date1 != date2,當 2 是不同時刻時返回 true
  • date1.Before(date2),當第一個嚴格地在第二個之前時返回 true
  • date1.After(date2),當第一個嚴格在第二個之後時返回 true

警告:當 2 時間比較相同(或對應於完全相同的日期)時,函式 AfterBefore 將返回 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