Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Vremenske zone ključne su za svaku aplikaciju koja se bavi datumima i vremenom. Naravno, to posebno vrijedi za aplikacije koje služe korisnicima diljem kontinenata i lokacija. Vremenske zone određuju odmak od koordiniranog univerzalnog vremena (UTC) za određene lokacije diljem svijeta. Oni igraju vitalnu ulogu u osiguravanju točnog i pouzdanog upravljanja vremenom.

Go nudi vremenski paket u svojoj standardnoj biblioteci za rad s vremenom i vremenskim zonama. Možete dohvatiti i pretvoriti vremenske zone na raznim lokacijama pomoću vremenskog paketa.

Vremenski paket

The vrijeme paket pruža funkcionalnost za rad s vremenima i datumima, mjerenje i prikaz vremena te manipuliranje datumima pomoću gregorijanskog kalendara bez prijestupnih sekundi.

Vremenski paket pruža a Vrijemevrsta strukture koji sadrži polje lokacije koje možete koristiti za postavljanje vremenskih zona.

instagram viewer

Možete uvesti vremenski paket s naredbom za uvoz.

uvoz"vrijeme"

Ovdje je tip vremenske strukture i njena polja. Polja se ne izvoze, pa ih nema u službenoj dokumentaciji.

paket glavni

tip Vrijeme strukturirati {
// zid je zidno vrijeme u formatu koji vraća runtime.nanotime()
// funkcija.
zid uint64

// ext je monotono očitanje sata u formatu koji vraća
// runtime.nanotime().
ekst int64

// loc je pokazivač na strukturu Lokacija povezanu s ovim vremenom.
loc *Lokacija
}

tip Mjesto strukturirati {
// naziv je naziv vremenske zone, kao što je "UTC" ili "PST".
Ime niz

// zona sadrži informacije o kratici vremenske zone, pomaku,
// i pravilo za jednu vremensku zonu na lokaciji.
zona []zona

// tx sadrži informacije o tome kada je skraćenica vremenske zone ili
// pomak promjena za lokaciju.
tx []zonaTrans

// extend sadrži naziv nadređene vremenske zone ako je ova lokacija
// proteže se od drugog.
proširiti niz

// cacheStart i cacheEnd su Unix vremenske oznake koje deiniraju raspon
// za koje je valjano polje cacheZone.
cacheStart int64
cacheEnd int64

// cacheZone pokazuje na zonu koja je trenutno važeća za to vrijeme
// raspon definiran pomoću cacheStart i cacheEnd.
cacheZone *zona
}

Mnoge metode koriste vrijeme i Mjesto strukture, uključujući metode vremenske zone.

Učitavanje informacija o vremenskoj zoni

Učitavanje informacija o vremenskoj zoni jedna je od osnovnih operacija pri radu s vremenskim zonama. The LoadLocation metoda pruža funkcionalnost za učitavanje informacija o vremenskoj zoni iz IANA baza podataka vremenskih zona. The LoadLocation metoda uzima naziv vremenske zone i vraća podatke o lokaciji i pogrešku za rukovanje. Nakon što učita informacije o vremenskoj zoni, stvara a vrijeme instanca strukture povezana s vremenskom zonom.

uvoz (
"fmt"
"vrijeme"
)

funkglavni() {
// Učitaj lokaciju vremenske zone za Ameriku/New_York
loc, err := vrijeme. LoadLocation("Amerika/New_York")

ako pogriješiti != nula {
fmt. Println("Pogreška pri učitavanju lokacije:", pogreška)
povratak
}

// Dobivanje trenutnog vremena na lokaciji
sad := vrijeme. Now().In (loc)
fmt. Println("Trenutno vrijeme u New Yorku:", sada)
}

The U metoda Sada funkcija uzima lokaciju i tamo ispisuje vrijeme:

Osim toga, možete koristiti FixedZone metoda za učitavanje trenutnog vremena na lokaciji ako znate niz lokacije i pomak vremenske zone od UTC-a. Prvo ćete morati učitati trenutno vrijeme u UTC-u, a zatim ćete koristiti metodu FixedZone za učitavanje lokacija na temelju niza i pomaka prije prosljeđivanja lokacije In metodi vremena primjer.

uvoz (
"fmt"
"vrijeme"
)

funkglavni() {
// Dobivanje trenutnog vremena u UTC
sad := vrijeme. Sada().UTC()

// Postavite vremensku zonu za Lagos
lagos := sada. Na vrijeme. Fiksna zona("WAT", 3600))

// Ispis trenutnog vremena na obje lokacije
fmt. Println("Trenutno vrijeme u Lagosu:", lagos)
}

The glavni funkcija ispisuje trenutno vrijeme u Lagosu na konzolu.

Mjerenje trajanja vremenske zone

Vremenski paket pruža Zona metoda za dohvaćanje kratice i pomaka vremenske zone povezane s a vrijeme. Vrijeme vrijednost. Metoda Zone vraća niz koji predstavlja kraticu vremenske zone (npr. "EST" za "America/New_York") i cijeli broj koji predstavlja broj sekundi istočno od UTC-a.

uvoz (
"fmt"
"vrijeme"
)

funkglavni() {
// Učitaj lokaciju vremenske zone za Ameriku/New_York
loc, err := vrijeme. LoadLocation("Amerika/New_York")

ako pogriješiti != nula {
fmt. Println("Pogreška pri učitavanju lokacije:", pogreška)
povratak
}

// Dohvaćanje trenutnog vremena u UTC-u i navedene lokacije
t1 := vrijeme. Sada()
t2 := t1.In (loc)

// Dobivanje pomaka u sekundama za svaku vremensku zonu
//za vremenske zone
_, pomak1 := t1.Zona()
_, pomak2 := t2.Zone()

// Izračunajte trajanje pomaka vremenske zone
// između UTC-a i Amerike/New_Yorka
trajanje := pomak2 - pomak1

fmt. Ispisf("Trajanje pomaka vremenske zone" +
" između UTC i New Yorka je: %d sekundi", trajanje)
}

U glavnoj funkciji, metoda zone mjeri trajanje pomaka vremenske zone između dvije vremenske zone (vrijeme. Vremenske vrijednosti). The t1 varijabla je trenutno vrijeme u UTC, a t2 varijabla je trenutno vrijeme u vremenskoj zoni "America/New_York".

Funkcija ispisuje trajanje varijabla (razlika u pomaku između vremenskih zona) koja predstavlja pomak vremenske zone u sekundama.

Procjena vremena između vremenskih zona

Možete procijeniti vrijeme između vremenskih zona ako znate trajanje između vremenskih zona. Možete koristiti Dodati metoda In metode vašeg vremena. Instanca vremenske strukture za dodavanje trajanja vremenu u vremenskoj zoni.

uvoz (
"log"
"vrijeme"// uvoz vremenskog paketa
)

funkevaluateTime(t vrijeme. Vrijeme, vrijeme trajanja. Trajanje)vrijeme.Vrijeme {
// učitavanje lokacije za Afriku/Lagos
mjesto, greška := vrijeme. LoadLocation("Afrika/Lagos")

ako pogriješiti != nula {
log. Println("Došlo je do pogreške prilikom učitavanja lokacije")
}

povratak t. U (lokacija).Dodaj (trajanje)
}

The evaluateTime funkcija traje neko vrijeme. Instanca vremena i trajanje tipa vrijeme. Trajanje, vraćajući vrijeme u vremenskoj zoni. Učitava trenutno vrijeme u "Afrika/Lagos" i dodaje trajanje vremenu.

Manipulirajte vremenom i datumom s vremenskim paketom

Vremenski paket je vrlo svestran za rad s vremenima i datumima. Paket vremena pruža funkcije kao što su Unix() za pretvaranje vremena u Unix vrijeme, Sleep() za pauziranje goroutina i Format() za formatiranje vremenskih vrijednosti u niz.