Сократить длительность по минутам - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу вычесть 30 минут из orderDeliveryStartTime, используя функцию Truncate библиотеки time в Go.Но вместо этого вычитается 30 секунд.Как вычесть ровно 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))

}

Фактический результат:

1800000000000

2019-04-11 13:00:30

2019-04-11 13: 00: 00

Ожидаемый результат:

1800000000000

2019-04-1113: 00: 30

2019-04-11 12: 30: 30

1 Ответ

4 голосов
/ 12 апреля 2019

Просто используйте метод Time.Add(), передав -30 * time.Minute:

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

Выходы (попробуйте на Go Playground ):

2019-04-11 13:00:30
2019-04-11 12:30:30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...