81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package datetime
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// DaysInMonth retourne le nombre de jours dans le mois.
|
||
func DaysInMonth(t time.Time) int { return daysInMonth(t.Year(), t.Month()) }
|
||
|
||
// DaysInYear retourne le nombe de jours dans l’année.
|
||
func DaysInYear(t time.Time) int {
|
||
if IsBissextil(t) {
|
||
return 366
|
||
}
|
||
return 365
|
||
}
|
||
|
||
// IsBissextil retourne vrai si la date est située dans une année bissextile.
|
||
func IsBissextil(t time.Time) bool { return isYearBissextil(t.Year()) }
|
||
|
||
// IsWeekend retourne vrai si la date est située dans le weekend.
|
||
func IsWeekend(t time.Time) bool {
|
||
d := t.Weekday()
|
||
|
||
return d != time.Saturday && d != time.Sunday
|
||
}
|
||
|
||
// IsBeginOfMonth retourne vrai si la date est dans le premier jour du mois.
|
||
func IsBeginOfMonth(t time.Time) bool { return t.Day() == 1 }
|
||
|
||
// IsEndOfMonth retourne vrai si la date est dans le dernier jour du mois.
|
||
func IsEndOfMonth(t time.Time) bool { return t.Day() == DaysInMonth(t) }
|
||
|
||
// IsBeginOfYear retourne vrai si la date est dans le premier jour de l’année.
|
||
func IsBeginOfYear(t time.Time) bool { return IsBeginOfMonth(t) && t.Month() == time.January }
|
||
|
||
// IsEndOfYear retourne vrai si la date est dans le dernier jour de l’année.
|
||
func IsEndOfYear(t time.Time) bool { return IsEndOfMonth(t) && t.Month() == time.December }
|
||
|
||
// IsToday retourne vrai si la date est située aujourd’hui.
|
||
func IsToday(t time.Time) bool {
|
||
y, m, d := t.Date()
|
||
y0, m0, d0 := time.Now().In(t.Location()).Date()
|
||
|
||
return y == y0 && m == m0 && d == d0
|
||
}
|
||
|
||
// IsTomorrow retourne vrai si la date est située demain.
|
||
func IsTomorrow(t time.Time) bool {
|
||
n := time.Now().In(t.Location())
|
||
y, m, d := t.Date()
|
||
y0, m0, d0 := n.Date()
|
||
|
||
if d > 1 {
|
||
return y == y0 && m == m0 && d == d0+1
|
||
}
|
||
|
||
if m > time.January {
|
||
return y == y0 && m == m0+1 && IsEndOfMonth(n)
|
||
}
|
||
|
||
return y == y0+1 && IsEndOfYear(n)
|
||
}
|
||
|
||
// IsYesterday retourne vrai si la date est située hier.
|
||
func IsYesterday(t time.Time) bool {
|
||
n := time.Now().In(t.Location())
|
||
y, m, d := t.Date()
|
||
y0, m0, d0 := n.Date()
|
||
|
||
if d < DaysInMonth(t) {
|
||
return y == y0 && m == m0 && d == d0-1
|
||
}
|
||
|
||
if m < time.December {
|
||
return y == y0 && m == m0-1 && IsBeginOfMonth(n)
|
||
}
|
||
|
||
return y == y0-1 && IsBeginOfYear(n)
|
||
}
|