Recherche…
Introduction
Le package Go time
fournit des fonctionnalités pour mesurer et afficher le temps.
Ce paquet fournit une structure time.Time
, permettant de stocker et de faire des calculs aux dates et heures.
Syntaxe
- time.Date (2016, time.December, 31, 23, 59, 59, 999, time.UTC) // initialise
- date1 == date2 // retourne
true
quand les 2 sont le même moment - date1! = date2 // renvoie
true
lorsque les 2 sont des moments différents - date1.Avant (date2) // retourne
true
lorsque le premier est strictement avant le second - date1.After (date2) // renvoie
true
lorsque le premier est strictement après le second
Heure de retour.Temps Zéro Valeur lorsque la fonction a une erreur
const timeFormat = "15 Monday January 2006" func ParseDate(s string) (time.Time, error) { t, err := time.Parse(timeFormat, s) if err != nil { // time.Time{} returns January 1, year 1, 00:00:00.000000000 UTC // which according to the source code is the zero value for time.Time // https://golang.org/src/time/time.go#L23 return time.Time{}, err } return t, nil }
Analyse du temps
Si vous avez une date stockée sous forme de chaîne, vous devrez l'analyser. Utiliser le time.Parse
.
// time.Parse( format , date to parse)
date, err := time.Parse("01/02/2006", "04/08/2017")
if err != nil {
panic(err)
}
fmt.Println(date)
// Prints 2017-04-08 00:00:00 +0000 UTC
Le premier paramètre est la disposition dans laquelle la chaîne stocke la date et le deuxième paramètre est la chaîne contenant la date. 01/02/2006
est la même chose que de dire que le format est MM/DD/YYYY
.
La mise en page définit le format en indiquant comment l’heure de référence, définie comme étant Mon Jan 2 15:04:05 -0700 MST 2006
serait interprétée si c’était la valeur; il sert d'exemple du format d'entrée. La même interprétation sera alors apportée à la chaîne d'entrée.
Vous pouvez voir les constantes définies dans le package de temps pour savoir comment écrire la chaîne de présentation, mais notez que les constantes ne sont pas exportées et ne peuvent pas être utilisées en dehors du package de temps.
const (
stdLongMonth // "January"
stdMonth // "Jan"
stdNumMonth // "1"
stdZeroMonth // "01"
stdLongWeekDay // "Monday"
stdWeekDay // "Mon"
stdDay // "2"
stdUnderDay // "_2"
stdZeroDay // "02"
stdHour // "15"
stdHour12 // "3"
stdZeroHour12 // "03"
stdMinute // "4"
stdZeroMinute // "04"
stdSecond // "5"
stdZeroSecond // "05"
stdLongYear // "2006"
stdYear // "06"
stdPM // "PM"
stdpm // "pm"
stdTZ // "MST"
stdISO8601TZ // "Z0700" // prints Z for UTC
stdISO8601SecondsTZ // "Z070000"
stdISO8601ShortTZ // "Z07"
stdISO8601ColonTZ // "Z07:00" // prints Z for UTC
stdISO8601ColonSecondsTZ // "Z07:00:00"
stdNumTZ // "-0700" // always numeric
stdNumSecondsTz // "-070000"
stdNumShortTZ // "-07" // always numeric
stdNumColonTZ // "-07:00" // always numeric
stdNumColonSecondsTZ // "-07:00:00"
)
Temps de comparaison
Parfois, vous aurez besoin de connaître, avec des objets à 2 dates, s'il y a des correspondances avec la même date, ou de trouver quelle date est après l'autre.
Dans Go , il y a 4 façons de comparer les dates:
-
date1 == date2
, retournetrue
quand les 2 sont le même moment -
date1 != date2
, renvoietrue
lorsque les 2 sont des moments différents -
date1.Before(date2)
, renvoietrue
lorsque le premier est strictement avant le second -
date1.After(date2)
, renvoietrue
lorsque le premier est strictement après le second
ATTENTION: Lorsque les 2 temps à comparer sont les mêmes (ou correspondent à la même date), les fonctions
After
etBefore
renverrontfalse
, car une date n'est ni avant ni après elle-même
date1 == date1
, retournetrue
date1 != date1
, retournefalse
date1.After(date1)
, retournefalse
date1.Before(date1)
, retournefalse
CONSEILS: Si vous avez besoin de savoir si une date est antérieure ou égale à une autre, il suffit de combiner les 4 opérateurs
date1 == date2 && date1.After(date2)
, renvoietrue
lorsque la date1 est postérieure ou égale à date2
ou en utilisant! (date1.Before(date2))
date1 == date2 && date1.Before(date2)
, retournetrue
lorsque date1 est avant ou égale date2 ou utilise!(date1.After(date2))
Quelques exemples pour voir comment utiliser:
// Init 2 dates for example
var date1 = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
var date2 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
var date3 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
bool1 := date1.Before(date2) // true, because date1 is before date2
bool2 := date1.After(date2) // false, because date1 is not after date2
bool3 := date2.Before(date1) // false, because date2 is not before date1
bool4 := date2.After(date1) // true, because date2 is after date1
bool5 := date1 == date2 // false, not the same moment
bool6 := date1 == date3 // true, different objects but representing the exact same time
bool7 := date1 != date2 // true, different moments
bool8 := date1 != date3 // false, not different moments
bool9 := date1.After(date3) // false, because date1 is not after date3 (that are the same)
bool10:= date1.Before(date3) // false, because date1 is not before date3 (that are the same)
bool11 := !(date1.Before(date3)) // true, because date1 is not before date3
bool12 := !(date1.After(date3)) // true, because date1 is not after date3