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 , retourne true quand les 2 sont le même moment
  • date1 != date2 , renvoie true lorsque les 2 sont des moments différents
  • date1.Before(date2) , renvoie true lorsque le premier est strictement avant le second
  • date1.After(date2) , renvoie true 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 et Before renverront false , car une date n'est ni avant ni après elle-même

  • date1 == date1 , retourne true
  • date1 != date1 , retourne false
  • date1.After(date1) , retourne false
  • date1.Before(date1) , retourne false

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) , renvoie true lorsque la date1 est postérieure ou égale à date2
    ou en utilisant ! (date1.Before(date2))
  • date1 == date2 && date1.Before(date2) , retourne true 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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow