Comment formater l'heure actuelle en utilisant un format aaaaMMjjHHmmss?

119

J'essaye de formater l'heure actuelle en utilisant ce format yyyyMMddHHmmss.

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

Cela produit:

yyyyMMddHHmmss

Aucune suggestion?

sergserg
la source
Voici un exemple de terrain de jeu du fonctionnement du formatage de la date. Il s'agit à la fois de convertir une chaîne en heure et d'imprimer une heure dans un format spécifique. play.golang.org/p/qK6_9KNJNx
Nitesh

Réponses:

242

Utilisation

fmt.Println(t.Format("20060102150405"))

comme Go utilise les constantes suivantes pour formater la date, reportez-vous ici

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
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)
Cris
la source
56
en fait, le format golang est très étrange. pourquoi ne pas utiliser le style aaaammjjHHiiss, mais utiliser le "" 2006/01/02/15/04/05 ", je n'ai pas compris la vraie raison
Kewin
11
La chaîne de mise en page est une représentation de l'horodatage, 2 janvier 15:04:05 2006 MST. Un moyen facile de se souvenir de cette valeur est qu'elle contient, lorsqu'elle est présentée dans cet ordre, les valeurs (alignées avec les éléments ci-dessus): 1 2 3 4 5 6 -7 De golang.org/src/time/example_test.go
kakilangit
28
Technique mnémotechnique pour ceux en dehors des États-Unis: imaginez ce que vous faisiez le 2 janvier 2006, à peine cinq secondes après 15h04, mais imaginez que cela se passe au Burkina Faso (UTC -7). La prochaine fois que vous aurez besoin de formater une date, souvenez-vous simplement de cet événement particulier (!)
Enrico
3
Je ne connaissais pas le mnémonique séquentiel, pratique, mais allez pourquoi n'est-ce pas le 1er février ...
silasdavis
4
Donc, tout ce dont je dois me souvenir, c'est d'aligner la date dans l'ordre mois-jour-année, puis de coller l'heure au milieu, et de mettre le fuseau horaire après l'année, et cela devient très facile à retenir. Soigné. Quelqu'un a un mnémonique pour se souvenir de l'ordre de ce mnémonique ..?
Joey Sabey
20

Cette question vient en haut de la recherche Google lorsque vous trouvez "format d'heure actuelle golang", donc, pour toutes les personnes qui souhaitent utiliser un autre format, rappelez-vous que vous pouvez toujours appeler à:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Par exemple, pour obtenir l'heure actuelle sous la forme "AAAA-MM-JJTHH: MM: SS" (par exemple 2019-01-22T12: 40: 55), vous pouvez utiliser ces méthodes avec fmt.Sprintf:

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Comme toujours, rappelez-vous que les documents sont la meilleure source d'apprentissage: https://golang.org/pkg/time/

Luis Cabrera Benito
la source
4

Le paquet de temps dans Golang a quelques méthodes qui pourraient valoir la peine d'être examinées.

Format func (heure)

func (t Time) Format (chaîne de mise en page) string Format renvoie une représentation textuelle de la valeur de temps formatée selon la mise en page, qui définit le format en montrant comment l'heure de référence,

Mon Jan 2 15:04:05 -0700 MST 2006 serait affiché s'il s'agissait de la valeur; il sert d'exemple de la sortie souhaitée. Les mêmes règles d'affichage seront alors appliquées à la valeur de temps. Les dispositions prédéfinies ANSIC, UnixDate, RFC3339 et d'autres décrivent des représentations standard et pratiques de l'heure de référence. Pour plus d'informations sur les formats et la définition de l'heure de référence, consultez la documentation de l'ANSIC et les autres constantes définies par ce package.

Source ( http://golang.org/pkg/time/#Time.Format )

J'ai également trouvé un exemple de définition de la mise en page ( http://golang.org/src/pkg/time/example_test.go )

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }
TheZelus
la source
4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

donne:

>> 2014-11-12 11:45:26.371 +0000 UTC
Cool.wen
la source