Maison >développement back-end >Golang >Pourquoi `time.Parse()` de Go ne gère-t-il pas les identifiants de fuseau horaire ?

Pourquoi `time.Parse()` de Go ne gère-t-il pas les identifiants de fuseau horaire ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 01:14:10437parcourir

Why Doesn't Go's `time.Parse()` Handle Timezone Identifiers?

Pourquoi time.Parse() de Go n'analyse pas les identifiants de fuseau horaire

Dans Go, la fonction time.Parse() est utilisée pour analyser une chaîne de date et d'heure en une valeur Time. Cependant, contrairement à d'autres bibliothèques de date et d'heure, time.Parse() n'analyse pas automatiquement les identifiants de fuseau horaire comme « EST » ou « EDT ». Au lieu de cela, il utilise le fuseau horaire du système actuel pour déterminer le décalage horaire.

Le problème

Le code fourni dans la question illustre ce problème. Il tente d'analyser une chaîne de date ("2018 08 01 12:00 EDT") à l'aide de time.Parse() de deux manières : avec et sans spécifier l'emplacement du fuseau horaire souhaité (Amérique/New_York).

Lors de l'utilisation time.Parse() sans spécifier d'emplacement, l'identifiant de fuseau horaire ("EDT") n'est pas reconnu et l'heure est analysée comme étant dans le fuseau horaire actuel du système (" 0000"). Cela entraîne une valeur d'heure incorrecte.

La solution

Pour analyser correctement une chaîne de date et d'heure qui inclut un identifiant de fuseau horaire, la fonction time.ParseInLocation() doit être utilisé. Cette fonction prend un paramètre Location supplémentaire, qui spécifie le fuseau horaire souhaité pour l'heure analysée.

Dans le code fourni, time.LoadLocation() est utilisé pour créer un objet Location pour le fuseau horaire souhaité ("America/New_York ") avant de le transmettre à time.ParseInLocation(). Cela garantit que l'identifiant de fuseau horaire ("EDT") est correctement analysé et que la valeur d'heure correcte est renvoyée.

Solutions alternatives

Alternativement, on peut utiliser une date et bibliothèque de temps qui prend explicitement en charge l'analyse des fuseaux horaires, comme la bibliothèque populaire "time.go". Cette bibliothèque fournit des fonctions comme ParseInZone(), qui permettent une analyse directe des identifiants de fuseau horaire.

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!

Déclaration:
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