以分钟为单位截断持续时间

I want to subtract 30 minutes from orderDeliveryStartTime by using the Truncate function of the time library in Go. But it's subtracting 30 seconds instead. How can I subtract exactly 30 minutes from a time.Time?

package main

import (
    "fmt"
    "time"
)

func main() {
    var pickingTimeConfig int
    pickingTimeConfig = 30

    layoutTime := "2006-01-02 15:04:05"

    pickingTime := time.Duration(pickingTimeConfig) * time.Minute
    fmt.Println(pickingTime.Nanoseconds())
    vcmTimeLocation := time.FixedZone("UTC+7", 25200)

    orderDeliveryStartTime := time.Date(2019, 4, 11, 13, 0, 30, 0, vcmTimeLocation)

    fmt.Println(orderDeliveryStartTime.Format(layoutTime))
    fmt.Println(orderDeliveryStartTime.Truncate(pickingTime).Format(layoutTime))

}

Actual Result:

1800000000000

2019-04-11 13:00:30

2019-04-11 13:00:00

Expected Result:

1800000000000

2019-04-11 13:00:30

2019-04-11 12:30:30

Simply use the Time.Add() method, passing -30 * time.Minute:

t2 := orderDeliveryStartTime.Add(-30 * time.Minute)
fmt.Println(t2.Format(layoutTime))

Outputs (try it on the Go Playground):

2019-04-11 13:00:30
2019-04-11 12:30:30