按分钟截断时间段

Loi*_*int 1 time go

我想orderDeliveryStartTime通过使用Go中库的Truncate功能减去30分钟time。但它正在减去 30 秒。如何从 a 中减去 30 分钟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))

}
Run Code Online (Sandbox Code Playgroud)

实际结果:

1800000000000

2019-04-11 13:00:30

2019-04-11 13:00:00

预期结果:

1800000000000

2019-04-11 13:00:30

2019-04-11 12:30:30

icz*_*cza 5

只需使用该Time.Add()方法,传递-30 * time.Minute

t2 := orderDeliveryStartTime.Add(-30 * time.Minute)
fmt.Println(t2.Format(layoutTime))
Run Code Online (Sandbox Code Playgroud)

输出(在Go Playground上试试):

2019-04-11 13:00:30
2019-04-11 12:30:30
Run Code Online (Sandbox Code Playgroud)