Durations move a fixed time forward or backward by a measured amount.

duration A duration is an elapsed amount of time, such as hours or days, that can be added to a time value.

Add Durations

days
add_durations.go
Replay: real traced execution (multi-file project)
package main

import (
	"fmt"
	"time"
)

func main() {
	var days = 3
	start := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)
	delta := time.Duration(days) * 24 * time.Hour
	end := start.Add(delta)

	fmt.Println("days=", days)
	fmt.Println("start=", start.Format("2006-01-02"))
	fmt.Println("end=", end.Format("2006-01-02"))
}
package main

import (
	"fmt"
	"time"
)

func main() {
	var days = 1
	start := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)
	delta := time.Duration(days) * 24 * time.Hour
	end := start.Add(delta)

	fmt.Println("days=", days)
	fmt.Println("start=", start.Format("2006-01-02"))
	fmt.Println("end=", end.Format("2006-01-02"))
}
package main

import (
	"fmt"
	"time"
)

func main() {
	var days = 7
	start := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)
	delta := time.Duration(days) * 24 * time.Hour
	end := start.Add(delta)

	fmt.Println("days=", days)
	fmt.Println("start=", start.Format("2006-01-02"))
	fmt.Println("end=", end.Format("2006-01-02"))
}
  1. days ← 3, start ← time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)

    8func main() {9  var days→ 3 = 3 //@days=1, 710  start→ time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)11  delta→ 259200000000000 := time.Duration(days3) * 24 * time.Hour12  end→ time.Date(2026, time.May, 31, 9, 0, 0, 0, time.UTC) := starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Add(delta259200000000000)1314  fmt.Println("days=", days3)15  fmt.Println("start=", starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))16  fmt.Println("end=", endtime.Date(2026, time.May, 31, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))17}
    outputdays= 3
    start= 2026-05-28
    end= 2026-05-31
  1. days ← 1, start ← time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)

    8func main() {9  var days→ 1 = 110  start→ time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)11  delta→ 86400000000000 := time.Duration(days1) * 24 * time.Hour12  end→ time.Date(2026, time.May, 29, 9, 0, 0, 0, time.UTC) := starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Add(delta86400000000000)1314  fmt.Println("days=", days1)15  fmt.Println("start=", starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))16  fmt.Println("end=", endtime.Date(2026, time.May, 29, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))17}
    outputdays= 1
    start= 2026-05-28
    end= 2026-05-29
  1. days ← 7, start ← time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)

    8func main() {9  var days→ 7 = 710  start→ time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC) := time.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC)11  delta→ 604800000000000 := time.Duration(days7) * 24 * time.Hour12  end→ time.Date(2026, time.June, 4, 9, 0, 0, 0, time.UTC) := starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Add(delta604800000000000)1314  fmt.Println("days=", days7)15  fmt.Println("start=", starttime.Date(2026, time.May, 28, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))16  fmt.Println("end=", endtime.Date(2026, time.June, 4, 9, 0, 0, 0, time.UTC).Format("2006-01-02"))17}
    outputdays= 7
    start= 2026-05-28
    end= 2026-06-04