Before, After, and Equal compare two deterministic time values.

compare time Comparing times answers ordering questions without relying on the current clock.

Compare Times

offsetHours
compare_times.go
Replay: real traced execution (multi-file project)
package main

import (
	"fmt"
	"time"
)

func main() {
	var offsetHours = 2
	deadline := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)
	check := deadline.Add(time.Duration(offsetHours) * time.Hour)
	isBefore := check.Before(deadline)
	isAfter := check.After(deadline)

	fmt.Println("offsetHours=", offsetHours)
	fmt.Println("check=", check.Format("15:04"))
	fmt.Println("before=", isBefore)
	fmt.Println("after=", isAfter)
}
package main

import (
	"fmt"
	"time"
)

func main() {
	var offsetHours = -1
	deadline := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)
	check := deadline.Add(time.Duration(offsetHours) * time.Hour)
	isBefore := check.Before(deadline)
	isAfter := check.After(deadline)

	fmt.Println("offsetHours=", offsetHours)
	fmt.Println("check=", check.Format("15:04"))
	fmt.Println("before=", isBefore)
	fmt.Println("after=", isAfter)
}
package main

import (
	"fmt"
	"time"
)

func main() {
	var offsetHours = 5
	deadline := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)
	check := deadline.Add(time.Duration(offsetHours) * time.Hour)
	isBefore := check.Before(deadline)
	isAfter := check.After(deadline)

	fmt.Println("offsetHours=", offsetHours)
	fmt.Println("check=", check.Format("15:04"))
	fmt.Println("before=", isBefore)
	fmt.Println("after=", isAfter)
}
  1. offsetHours ← 2, deadline ← time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)

    8func main() {9  var offsetHours→ 2 = 2 //@offsetHours=-1, 510  deadline→ time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)11  check→ time.Date(2026, time.May, 28, 14, 0, 0, 0, time.UTC) := deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC).Add(time.Duration(offsetHours2) * time.Hour)12  isBefore→ false := checktime.Date(2026, time.May, 28, 14, 0, 0, 0, time.UTC).Before(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))13  isAfter→ true := checktime.Date(2026, time.May, 28, 14, 0, 0, 0, time.UTC).After(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))1415  fmt.Println("offsetHours=", offsetHours2)16  fmt.Println("check=", checktime.Date(2026, time.May, 28, 14, 0, 0, 0, time.UTC).Format("15:04"))17  fmt.Println("before=", isBeforefalse)18  fmt.Println("after=", isAftertrue)19}
    outputoffsetHours= 2
    check= 14:00
    before= false
    after= true
  1. offsetHours ← -1, deadline ← time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)

    8func main() {9  var offsetHours→ -1 = -110  deadline→ time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)11  check→ time.Date(2026, time.May, 28, 11, 0, 0, 0, time.UTC) := deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC).Add(time.Duration(offsetHours-1) * time.Hour)12  isBefore→ true := checktime.Date(2026, time.May, 28, 11, 0, 0, 0, time.UTC).Before(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))13  isAfter→ false := checktime.Date(2026, time.May, 28, 11, 0, 0, 0, time.UTC).After(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))1415  fmt.Println("offsetHours=", offsetHours-1)16  fmt.Println("check=", checktime.Date(2026, time.May, 28, 11, 0, 0, 0, time.UTC).Format("15:04"))17  fmt.Println("before=", isBeforetrue)18  fmt.Println("after=", isAfterfalse)19}
    outputoffsetHours= -1
    check= 11:00
    before= true
    after= false
  1. offsetHours ← 5, deadline ← time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)

    8func main() {9  var offsetHours→ 5 = 510  deadline→ time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC)11  check→ time.Date(2026, time.May, 28, 17, 0, 0, 0, time.UTC) := deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC).Add(time.Duration(offsetHours5) * time.Hour)12  isBefore→ false := checktime.Date(2026, time.May, 28, 17, 0, 0, 0, time.UTC).Before(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))13  isAfter→ true := checktime.Date(2026, time.May, 28, 17, 0, 0, 0, time.UTC).After(deadlinetime.Date(2026, time.May, 28, 12, 0, 0, 0, time.UTC))1415  fmt.Println("offsetHours=", offsetHours5)16  fmt.Println("check=", checktime.Date(2026, time.May, 28, 17, 0, 0, 0, time.UTC).Format("15:04"))17  fmt.Println("before=", isBeforefalse)18  fmt.Println("after=", isAftertrue)19}
    outputoffsetHours= 5
    check= 17:00
    before= false
    after= true