Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Tidszoner er afgørende for enhver applikation, der omhandler datoer og tidspunkter. Dette gælder naturligvis især for apps, der betjener brugere på tværs af kontinenter og lokationer. Tidszoner bestemmer forskydningen fra Coordinated Universal Time (UTC) for specifikke steder rundt om i verden. De spiller en afgørende rolle for at sikre nøjagtig og pålidelig tidshåndtering.

Go leverer tidspakken i sit standardbibliotek til at arbejde med tid og tidszoner. Du kan hente og konvertere tidszoner på forskellige steder ved hjælp af tidspakken.

Tidspakken

Det tid pakke giver funktionalitet til arbejder med tidspunkter og datoer, måling og visning af tid og manipulation af datoer ved hjælp af en gregoriansk kalender uden springsekunder.

Tidspakken giver en Tidstruct type indeholdende det stedsfelt, du kan bruge til at indstille tidszoner.

Du kan importere tidspakken med en importerklæring.

instagram viewer
importere"tid"

Her er tidsstrukturtypen og dens felter. Felterne er ikke-eksporteret, så de er fraværende i den officielle dokumentation.

pakke vigtigste

type Tid struktur {
// wall er vægtiden i formatet returneret af runtime.nanotime()
// funktion.
væg uint64

// ext er den monotone uraflæsning i formatet returneret af
// runtime.nanotime().
ext int64

// loc er en pegepind til den lokationsstruktur, der er knyttet til denne tid.
loc *Placering
}

type Beliggenhed struktur {
// navn er tidszonenavnet, såsom "UTC" eller "PST".
navn snor

// zone indeholder information om tidszonens forkortelse, offset,
// og regl for en enkelt tidszone på stedet.
zone []zone

// tx indeholder information om, hvornår tidszonens forkortelse eller
// forskyd ændringer for en placering.
tx []zoneTrans

// extend indeholder navnet på en overordnet tidszone, hvis denne placering
// strækker sig fra en anden.
forlænge snor

// cacheStart og cacheEnd er Unix-tidsstempler, der definerer området
// som cacheZone-feltet er gyldigt for.
cacheStart int64
cacheEnd int64

// cacheZone peger på den zone, der i øjeblikket er gyldig for tiden
// område defineret af cacheStart og cacheEnd.
cacheZone *zone
}

Mange metoder bruger tiden og Beliggenhed strukturer, herunder tidszonemetoderne.

Indlæser tidszoneoplysninger

Indlæsning af tidszoneoplysninger er en af ​​de grundlæggende funktioner, når du arbejder med tidszoner. Det Indlæs Placering metode giver funktionalitet til indlæsning af tidszoneoplysninger fra IANA tidszonedatabase. Det Indlæs Placering metoden tager tidszonens navn og returnerer placeringsoplysningerne og en fejl til håndtering. Når den har indlæst tidszoneinformationen, opretter den en tid struct-instans forbundet med tidszonen.

importere (
"fmt"
"tid"
)

funcvigtigste() {
// Indlæs tidszoneplaceringen for America/New_York
loc, fejl := tid. LoadLocation("Amerika/New_York")

hvis fejl!= nul {
fmt. Println("Fejl ved indlæsning af placering:", fejl)
Vend tilbage
}

// Få det aktuelle tidspunkt på et sted
nu := tid. Now().In (loc)
fmt. Println("Nuværende tid i New York:", nu)
}

Det I metoden til Nu funktionen tager et sted ind og udskriver tiden der:

Derudover kan du bruge FixedZone metode til at indlæse den aktuelle tid på et sted, hvis du kender lokationsstrengen og tidszonens forskydning fra UTC. Først skal du indlæse den aktuelle tid i UTC, og derefter skal du bruge FixedZone-metoden til at indlæse placering baseret på strengen og forskydning, før placeringen overføres til tidens In-metode eksempel.

importere (
"fmt"
"tid"
)

funcvigtigste() {
// Få den aktuelle tid i UTC
nu := tid. Nu().UTC()

// Indstil tidszonen for Lagos
lagos := nu. I tide. FixedZone("WAT", 3600))

// Udskriv den aktuelle tid begge steder
fmt. Println("Nu i Lagos:", lagos)
}

Det vigtigste funktion udskriver den aktuelle tid i Lagos til konsollen.

Måling af tidszonevarighed

Tidspakken giver den Zone metode til at hente forkortelsen og forskydningen af ​​tidszonen forbundet med en tid. Tid værdi. Zonemetoden returnerer strengen, der repræsenterer forkortelsen af ​​tidszonen (f.eks. "EST" for "America/New_York") og et heltal, der repræsenterer antallet af sekunder øst for UTC.

importere (
"fmt"
"tid"
)

funcvigtigste() {
// Indlæs tidszoneplaceringen for America/New_York
loc, fejl := tid. LoadLocation("Amerika/New_York")

hvis fejl!= nul {
fmt. Println("Fejl ved indlæsning af placering:", fejl)
Vend tilbage
}

// Få den aktuelle tid i UTC og den angivne placering
t1 := tid. Nu()
t2 := t1.In (loc)

// Få offset i sekunder for hver tidszone
//for tidszonerne
_, offset1 := t1.Zone()
_, offset2 := t2.Zone()

// Beregn varigheden af ​​tidszoneskiftet
// mellem UTC og America/New_York
varighed := offset2 - offset1

fmt. Printf("Tidszoneskiftets varighed" +
"mellem UTC og New York er: %d sekunder", varighed)
}

I hovedfunktionen måler zonemetoden varigheden af ​​tidszoneskiftet mellem to tidszoner (tid. Tidsværdier). Det t1 variabel er det aktuelle tidspunkt i UTC, og t2 variabel er den aktuelle tid i tidszonen "America/New_York".

Funktionen udskriver varighed variabel (forskellen i offset mellem tidszonerne), der repræsenterer tidszoneskiftet i sekunder.

Evaluering af tid mellem tidszoner

Du kan evaluere tiden mellem tidszonerne, hvis du kender varigheden mellem tidszonerne. Du kan bruge Tilføje metode til din tids In-metode. Tidsstrukturforekomst for at tilføje en varighed til tiden i en tidszone.

importere (
"log"
"tid"// importer tidspakken
)

funcevaluereTid(t gang. Tid, varighed tid. Varighed)tid.Tid {
// indlæs lokationen for Afrika/Lagos
placering, fejl := tid. LoadLocation("Afrika/Lagos")

hvis fejl!= nul {
log. Println("Der opstod en fejl under indlæsning af placeringen")
}

Vend tilbage t. I (placering).Tilføj (varighed)
}

Det evaluereTid funktion tager tid. Tidsforekomst og en varighed af typen tid. Varighed, returnerer tiden i tidszonen. Den indlæser den aktuelle tid i "Afrika/Lagos" og tilføjer en varighed til tiden.

Manipuler tid og dato med tidspakken

Tidspakken er meget alsidig til at arbejde med både tider og datoer. Tidspakken indeholder funktioner som Unix() til at konvertere tid til Unix-tid, Sleep() til at sætte goroutiner på pause og Format() til at formatere tidsværdier til streng.