gob/datetime/informations.go

81 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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