Time and Formatting
Compare Times
Before, After, and Equal compare two deterministic time values.
compare time
Comparing times answers ordering questions without relying on the current clock.
Compare Times
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)
}
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
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
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