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)
|
|||
|
}
|