На моей модели startDate
и dueDate
.Я хочу прикрепить поля daysToStart
, daysLeft
и duration
к модели в соответствии со значениями startDate
и dueDate
.
- daysLeft должно быть разницей в днях с настоящего момента до
startDate
- длительность - это количество дней между началом и датой исполнения
- daysToStart - это разница между сейчас и
startDate
startDate
и dueDate
хранятся в дБ как time.Time
.Все расчеты должны быть нормализованы к времени UTC.
РЕДАКТИРОВАТЬ: startDate: "2019-07-09T00:00:00Z"
dueDate: "2019-07-10T00:00:00Z"
type Objective struct {
// fields
}
// attach daysLeft, duration and daysToStart
func (r *Objective) calculateDuration() {
r.Duration = int(math.Round(r.DueDate.Sub(r.StartDate).Hours() / 24))
}
func (r *Objective) calculateDaysLeft() {
r.DaysLeft = int(math.Round(r.DueDate.Sub(time.Now().UTC()).Hours()/24)) + 1
}
func (r *Objective) calculateDaysToStart() {
r.DaysToStart = int(math.Round(r.StartDate.Sub(time.Now().UTC()).Hours()/24)) + 1
}
Для предоставленного примера он возвращает неверные значения, например возвращает dasToStart
= 1, хотя startDate сегодня, поэтому он должен быть равен нулю.