Golang扣除了约会的具体时间

时间:2014-12-29 21:19:49

标签: time go

我在2014-10-22 00:00有一个golang的日期,我想在330分钟内扣除,以下是我使用的代码,但是,它不起作用,我试图减少时间与但是,持续时间不会缩短。本来,“开始日期”是2014-12-29 00 :: 00,扣除后,仍然是2014-12-29 00:00,这意味着扣除不起作用。

    layoutStart := "2006-01-02 15:04"
    layoutEnd := "2006-01-02 15:04"

    var st time.Time
    var et time.Time

    var err error
    var err2 error

    var neg_india_offset = time.Duration(-330) * time.Minute
    //var day_offset time.Duration = 1439 * time.Minute

    if st, err = time.Parse(layoutStart, startDate); err == nil {
        log.Printf("Start Time decoded: %v", st)
        st.Add(neg_india_offset)
        log.Printf("Start Time deduct: %v", st)
    } else {
        log.Printf("Failed to decode start time: %v", err)
    }

    if et, err2 = time.Parse(layoutEnd, endDate); err2 == nil {
        log.Printf("End Time decoded: %v", et)
        st.Add(neg_india_offset)
        log.Printf("End Time added day: %v", et)
    } else {
        log.Printf("Failed to decode end time: %v", err2)
    }

1 个答案:

答案 0 :(得分:1)

函数time.Time.Add()不会覆盖其参数。它返回新的时间。改变行

st.Add(neg_india_offset)

st = st.Add(neg_india_offset)

如果您想获得具有特定时区的日期,请查看time.ParseInLocation()功能。它可以解析指定时区的日期;像这样使用它:

loc, err := time.LoadLocation("India/Delhi")
// ...

st, err = time.ParseInLocation(layoutStart, startDate, loc)