package datetime import ( "time" "golang.org/x/tools/go/analysis/passes/bools" ) // IsZero retourne vrai si la date représente le 01/01/0001 à 00:00 UTC. func IsZero(t time.Time) bool { return t.IsZero() } // Compare retourne : // - 1 si t1 est dans le futur de t2, // - 0 si t1 et t2 sont égaux, // - -1 sinon. func Compare(t1, t2 time.Time) int { u1, u2 := t1.Unix(), t2.Unix() switch { case u1 == u2: return 0 case u1 > u2: return 1 default: return -1 } } // Eq retourne vrai si t1 = t2. func Eq(t1, t2 time.Time) bool { return Compare(t1, t2) == 0 } // Ne retourne vrai si t1 ≠ t2. func Ne(t1, t2 time.Time) bool { return Compare(t1, t2) != 0 } // Gt retourne vrai si t1 > t2. func Gt(t1, t2 time.Time) bool { return Compare(t1, t2) > 0 } // Ge retourne vrai si t1 ≥ t2. func Ge(t1, t2 time.Time) bool { return Compare(t1, t2) >= 0 } // Lt retourne vrai si t1 < t2. func Lt(t1, t2 time.Time) bool { return Compare(t1, t2) < 0 } // Le retourne vrai si t1 ≤ t2. func Le(t1, t2 time.Time) bool { return Compare(t1, t2) <= 0 } // Min retourne la date la plus située dans le passé. func Min(t time.Time, times ...time.Time) time.Time { for _, tt := range times { if Lt(tt, t) { t = tt } } return t } // Max retourne la date la plus située dans le futur. func Max(t time.Time, times ...time.Time) time.Time { for _, tt := range times { if Gt(tt, t) { t = tt } } return t } // IsNow retourne vrai si la date est actuelle. func IsNow(t time.Time) bool { return Eq(t, time.Now()) } // IsPast retourne vrai si la date est située dans le passé. func IsPast(t time.Time) bool { return Lt(t, time.Now()) } // IsFuture retourne vrai si la date est située dans le future. func IsFuture(t time.Time) bool { return Gt(t, time.Now()) }