Time and Formatting
Add Durations
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
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"))
}
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
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
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