Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Aikavyöhykkeet ovat tärkeitä kaikille päivämääriä ja kellonaikoja käsitteleville sovelluksille. Tämä pätee tietysti erityisesti sovelluksiin, jotka palvelevat käyttäjiä eri mantereilla ja eri paikoissa. Aikavyöhykkeet määrittävät poikkeaman koordinoidusta yleisajasta (UTC) tietyissä paikoissa ympäri maailmaa. Niillä on tärkeä rooli tarkan ja luotettavan ajankäytön varmistamisessa.

Go tarjoaa aikapaketin vakiokirjastossaan aika- ja aikavyöhykkeiden käsittelyä varten. Aikapaketin avulla voit hakea ja muuntaa aikavyöhykkeitä eri paikoista.

Aikapaketti

The aika paketti tarjoaa toimintoja työskennellä aikojen ja päivämäärien kanssa, mittaamalla ja näyttämällä aikaa ja manipuloimalla päivämääriä gregoriaanisen kalenterin avulla ilman karkaussekunteja.

Aikapaketti tarjoaa a Aikarakenteen tyyppi sisältää sijaintikentän, jota voit käyttää aikavyöhykkeiden asettamiseen.

instagram viewer

Voit tuoda aikapaketin tuontilausekkeella.

tuonti"aika"

Tässä on aikarakenteen tyyppi ja sen kentät. Kentät ovat viemättömiä, joten ne puuttuvat virallisesta dokumentaatiosta.

paketti pää

tyyppi Aika struct {
// seinä on seinän aika muodossa runtime.nanotime()
// toiminto.
seinään uint64

// ext on monotoninen kellon lukema muodossa, jonka palauttaa
// runtime.nanotime().
alanumero int64

// loc on osoitin tähän aikaan liittyvään Location-rakenteeseen.
loc *Sijainti
}

tyyppi Sijainti struct {
// nimi on aikavyöhykkeen nimi, kuten "UTC" tai "PST".
nimi merkkijono

// vyöhyke sisältää tietoa aikavyöhykkeen lyhenteestä, offsetista,
// ja sääntö yksittäiselle aikavyöhykkeelle sijainnissa.
vyöhyke []alue

// tx sisältää tietoa siitä, milloin aikavyöhykelyhenne tai
// offset muutokset sijainnille.
tx []zoneTrans

// laajennus sisältää pääaikavyöhykkeen nimen, jos tämä sijainti
// ulottuu toisesta.
laajentaa merkkijono

// cacheStart ja cacheEnd ovat Unix-aikaleimoja, jotka määrittävät alueen
// joille cacheZone-kenttä on kelvollinen.
välimuistiKäynnistä int64
cacheEnd int64

// cacheZone osoittaa vyöhykkeelle, joka on voimassa tällä hetkellä
// cacheStartin ja cacheEndin määrittämä alue.
cacheZone *vyöhyke
}

Monet menetelmät käyttävät Time and Sijainti rakenteet, mukaan lukien aikavyöhykemenetelmät.

Ladataan aikavyöhyketietoja

Aikavyöhyketietojen lataaminen on yksi perustoiminnoista työskennellessäsi aikavyöhykkeiden kanssa. The LoadLocation menetelmä tarjoaa toiminnallisuuden aikavyöhyketietojen lataamiseen IANA aikavyöhyketietokanta. The LoadLocation menetelmä ottaa aikavyöhykkeen nimen ja palauttaa sijaintitiedot ja käsittelyvirheen. Kun se on ladannut aikavyöhyketiedot, se luo a aika aikavyöhykkeeseen liittyvä struct-ilmentymä.

tuonti (
"fmt"
"aika"
)

funcpää() {
// Lataa Amerikan/New_Yorkin aikavyöhykkeen sijainti
loc, err := aika. LoadLocation("Amerikka/New_York")

jos virhe! = nolla {
fmt. Println("Virhe ladattaessa sijaintia:", virhe)
palata
}

// Hanki nykyinen aika paikasta
nyt := aika. Nyt().In (loc)
fmt. Println("Nykyinen aika New Yorkissa:", nyt)
}

The Sisään menetelmä Nyt toiminto ottaa paikan ja tulostaa ajan sinne:

Lisäksi voit käyttää FixedZone tapa ladata nykyinen aika sijainnissa, jos tiedät sijaintimerkkijonon ja aikavyöhykkeen siirtymän UTC: stä. Ensin sinun on ladattava nykyinen kellonaika UTC-tilassa, ja sitten käytät FixedZone-menetelmää ladataksesi sijainti merkkijonon ja offsetin perusteella ennen kuin siirretään sijainti In-metodille ajan ilmentymä.

tuonti (
"fmt"
"aika"
)

funcpää() {
// Hae nykyinen aika UTC: ssä
nyt := aika. Nyt().UTC()

// Aseta aikavyöhyke Lagosille
lagos := nyt. Ajallaan. FixedZone("WAT", 3600))

// Tulosta nykyinen aika molemmissa paikoissa
fmt. Println("Nykyinen aika Lagosissa:", lagos)
}

The pää toiminto tulostaa nykyisen ajan Lagosissa konsoliin.

Aikavyöhykkeen keston mittaaminen

Aikapaketti tarjoaa Alue menetelmä aikavyöhykkeen lyhenteen ja siirtymän hakemiseksi, joka liittyy a aika. Aika arvo. Zone-menetelmä palauttaa merkkijonon, joka edustaa aikavyöhykkeen lyhennettä (esim. "EST" tarkoittaa "Amerikka/New_York") ja kokonaisluvun, joka edustaa sekuntien lukumäärää UTC: stä itään.

tuonti (
"fmt"
"aika"
)

funcpää() {
// Lataa Amerikan/New_Yorkin aikavyöhykkeen sijainti
loc, err := aika. LoadLocation("Amerikka/New_York")

jos virhe! = nolla {
fmt. Println("Virhe ladattaessa sijaintia:", virhe)
palata
}

// Hanki nykyinen aika UTC: ssä ja määritetyssä paikassa
t1 := aika. Nyt()
t2 := t1.In (loc)

// Hanki siirtymä sekunneissa jokaiselle aikavyöhykkeelle
//aikavyöhykkeille
_, offset1 := t1.Zone()
_, offset2 := t2.Vyöhyke()

// Laske aikavyöhykesiirron kesto
// UTC: n ja Amerikan/New_Yorkin välillä
kesto := offset2 - offset1

fmt. Printf("Aikavyöhykkeen muutoksen kesto" +
" UTC: n ja New Yorkin välillä on: %d sekuntia", kesto)
}

Päätoiminnossa Zone-menetelmä mittaa kahden aikavyöhykkeen välisen aikavyöhykkeen siirtymän kestoa (aika. Aika-arvot). The t1 muuttuja on nykyinen aika UTC: ssä ja t2 muuttuja on nykyinen aika "America/New_York" aikavyöhykkeellä.

Toiminto tulostaa kesto muuttuja (aikavyöhykkeiden välisen siirtymän ero), joka edustaa aikavyöhykkeen siirtymää sekunneissa.

Aikavyöhykkeiden välisen ajan arviointi

Voit arvioida aikavyöhykkeiden välistä aikaa, jos tiedät aikavyöhykkeiden välisen keston. Voit käyttää Lisätä aikasi In-menetelmän menetelmä. Aikarakenne-instanssi lisäämään keston aikavyöhykkeen ajalle.

tuonti (
"Hirsi"
"aika"// tuo aikapaketti
)

funcarvioidaAika(t aika. Aika, kestoaika. Kesto)aika.Aika {
// lataa Afrikan/Lagosin sijainti
sijainti, virhe := aika. LoadLocation("Afrikka/Lagos")

jos virhe! = nolla {
Hirsi. Println("Sijaintia ladattaessa tapahtui virhe")
}

palata t. Kohteessa (sijainti). Lisää (kesto)
}

The arvioidaAika toiminto vie aikaa. Aikainstanssi ja tyypin kesto aika. Kesto, palauttaa ajan aikavyöhykkeelle. Se lataa nykyisen ajan "Afrikassa/Lagosissa" ja lisää aikaan keston.

Käsittele aikaa ja päivämäärää aikapaketin avulla

Aikapaketti on erittäin monipuolinen työskentelyyn sekä kellonaikojen että päivämäärien kanssa. Aikapaketti sisältää toimintoja, kuten Unix() ajan muuntamiseen Unix-ajaksi, Sleep() gorutiinien keskeyttämiseen ja Format() aika-arvojen muotoiluun merkkijonoksi.