Рассчитать разницу в днях между началом и сроком исполнения и рассчитать количество дней, оставшихся до срока исполнения - PullRequest
0 голосов
/ 09 июля 2019

На моей модели 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 сегодня, поэтому он должен быть равен нулю.

...