我在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.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)