79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
|
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()) }
|