gob/datetime/informations.go

81 lines
2.2 KiB
Go
Raw Normal View History

2023-10-31 10:18:00 +00:00
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 lanné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 lanné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 lannée.
func IsEndOfYear(t time.Time) bool { return IsEndOfMonth(t) && t.Month() == time.December }
// IsToday retourne vrai si la date est située aujourdhui.
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)
}