【Go】timeパッケージのAfter, Before, Equalの使い方


## 概要


Goの日時比較のサンプルコードをまとめたもの


## サンプルコード


### **time.After()・・・timeAがtimeBを超える日時の場合にtrue**


```go
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := timeA.After(timeB)
	fmt.Println(result) // true
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := timeA.After(timeB)
	fmt.Println(result) // false
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)

	result := timeA.After(timeB)
	fmt.Println(result) // false
}
```


### **time.Before()・・・timeAがtimeBより前の日時の場合にtrue**


```go
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := timeA.Before(timeB)
	fmt.Println(result) // true
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := timeA.Before(timeB)
	fmt.Println(result) // false
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)

	result := timeA.Before(timeB)
	fmt.Println(result) // false
}
```


### **!time.Before()・・・timeAがtimeB以降の日時の場合にtrue(**time.After() || time.Equal()と同じ**)**


```go
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := !timeA.Before(timeB)
	fmt.Println(result) // true
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := !timeA.Before(timeB)
	fmt.Println(result) // false
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)

	result := !timeA.Before(timeB)
	fmt.Println(result) // true
}

// time.After() || time.Equal()
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := timeA.After(timeB) || timeA.Equal(timeB)
	fmt.Println(result) // true
}
```


### **!time.After()・・・timeAがtimeB以前の日時の場合にtrue(**time.Before() || time.Equal()と同じ**)**


```go
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := !timeA.After(timeB)
	fmt.Println(result) // true
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := !timeA.After(timeB)
	fmt.Println(result) // false
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)

	result := !timeA.After(timeB)
	fmt.Println(result) // true
}

// time.Before() || time.Equal()
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := timeA.Before(timeB) || timeA.Equal(timeB)
	fmt.Println(result) // true
}
```


### time.Equal()・・・timeAがtimeBと同じ日時の場合true


```go
func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)

	result := timeA.Equal(timeB)
	fmt.Println(result) // true
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 10, 0, 0, 0, 0, time.UTC)

	result := timeA.Equal(timeB)
	fmt.Println(result) // false
}

func main() {
	timeA := time.Date(2024, 1, 15, 0, 0, 0, 0, time.UTC)
	timeB := time.Date(2024, 1, 20, 0, 0, 0, 0, time.UTC)

	result := timeA.Equal(timeB)
	fmt.Println(result) // false
}
```