【问题标题】:Golang deduct a specific time for a dateGolang 为某个日期扣除特定时间
【发布时间】:2014-12-29 21:19:48
【问题描述】:

我在golang中有一个日期,例如 2014-10-22 00:00 ,我想在 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)
    }

【问题讨论】:

    标签: time go


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多