Maison > développement back-end > Golang > Comment convertir un décalage horaire en fuseau horaire dans Go ?

Comment convertir un décalage horaire en fuseau horaire dans Go ?

Patricia Arquette
Libérer: 2024-12-17 04:59:25
original
515 Les gens l'ont consulté

How to Convert a Time Offset to a Time Zone in Go?

Conversion d'un décalage horaire en un emplacement/fuseau horaire dans Go

Lorsque vous travaillez avec des données sensibles au temps, il est souvent nécessaire de convertir une heure décalé dans un objet time.Location utilisable. Cela permet une représentation et une manipulation précises des valeurs temporelles par rapport à des fuseaux horaires spécifiques.

Par exemple, considérons l'extrait de code suivant :

func main() {
    offset := "+1100"

    t, err := time.Parse("15:04 GMT-0700","15:06 GMT"+offset)
    if err != nil {
        fmt.Println("fail", err)
    }
    fmt.Println(t)
    fmt.Println(t.UTC())
    fmt.Println(t.Location())
}
Copier après la connexion

Alors que ce code analyse la valeur temporelle avec l'heure spécifiée offset, l'appel de t.Location() ne renvoie ensuite aucune information significative.

Pour résoudre ce problème, nous devons créer manuellement un objet time.Location qui représente l'heure souhaitée compenser. Ceci peut être réalisé en utilisant la fonction time.FixedZone :

loc := time.FixedZone("UTC+11", +11*60*60)
Copier après la connexion

La variable loc est un objet time.Location qui représente le fuseau horaire UTC 11. Nous pouvons ensuite définir notre variable t pour qu'elle soit à cet emplacement :

t = t.In(loc)
Copier après la connexion

Ce faisant, nous nous assurons que le décalage GMT est enregistré et que nous pouvons afficher l'heure par rapport au décalage horaire réel de l'utilisateur final. .

Voici un exemple :

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("UTC+11", +11*60*60)

    t := time.Now()
    fmt.Println(t)
    fmt.Println(t.Location())

    t = t.In(loc)
    fmt.Println(t)
    fmt.Println(t.Location())

    fmt.Println(t.UTC())
    fmt.Println(t.Location())
}
Copier après la connexion

Ce code génère le suivant :

2009-11-10 23:00:00 +0000 UTC m=+0.000000001
UTC
2009-11-11 10:00:00 +1100 UTC+11
UTC+11
2009-11-10 23:00:00 +0000 UTC
UTC+11
Copier après la connexion

Comme vous pouvez le voir, l'heure t est maintenant dans le fuseau horaire UTC 11 et sa Location() renvoie les informations appropriées. Cela permet des opérations et des calculs précis basés sur le temps.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal