Простейшим будет просто использовать time.Duration
и метод time.Add()
для расчета даты окончания:
t := time.Now()
d := 3*time.Hour + 20*time.Minute
end := t.Add(d)
Если дата может быть больше чем в день, то этого уже недостаточно, поскольку необходимо учитывать летнее время и високосные годы. Кроме того, time.Duration
не может представлять продолжительность, превышающую 290 лет (приблизительно).
В этом случае продолжительность должна быть задана как (years, months, days)
троичная, и следует использовать time.AddDate()
.
t := time.Now()
years, months, days := 15, 2, 3
end := t.AddDate(years, months, days)
См. Связанные вопросы:
time.Since () с месяцами и годами
Разница между двумя объектами time.Time