Ajavööndid on iga kuupäevi ja kellaaegu käsitleva rakenduse jaoks üliolulised. Muidugi kehtib see eriti rakenduste kohta, mis teenindavad kasutajaid üle mandrite ja asukohtade. Ajavööndid määravad nihke koordineeritud universaalajast (UTC) teatud asukohtades üle maailma. Need mängivad olulist rolli täpse ja usaldusväärse ajakäsitluse tagamisel.
Go pakub ajapaketti oma standardteegis aja ja ajavöönditega töötamiseks. Ajapaketi abil saate tuua ja teisendada ajavööndeid erinevates kohtades.
Ajapakett
The aega pakett pakub funktsioone kellaaegade ja kuupäevadega töötamine, kellaaja mõõtmine ja kuvamine ning kuupäevadega manipuleerimine Gregoriuse kalendri abil ilma hüpesekunditeta.
Ajapakett annab a Aegstruktuuri tüüp mis sisaldab asukohavälja, mida saate ajavööndite määramiseks kasutada.
Ajapaketi saate importida impordi väljavõttega.
importida"aeg"
Siin on ajastruktuuri tüüp ja selle väljad. Põllud on eksporditud, seega puuduvad need ametlikust dokumentatsioonist.
pakett peamine
tüüp Aeg struktuur {
// sein on seina aeg vormingus, mille on tagastanud runtime.nanotime()
// funktsioon.
seina unint64// ext on monotoonne kella näit tagastatud vormingus
// käitusaeg.nanotime().
ext int64// loc on kursor selle ajaga seotud asukohastruktuurile.
loc *Asukoht
}tüüp Asukoht struktuur {
// nimi on ajavööndi nimi, näiteks "UTC" või "PST".
nimi string// tsoon sisaldab teavet ajavööndi lühendi, nihke,
// ja valitsege asukoha ühe ajavööndi jaoks.
tsoon []tsoon// tx sisaldab teavet selle kohta, millal ajavööndi lühend või
// asukoha muudatuste nihutamine.
tx []zoneTrans// laiend sisaldab vanema ajavööndi nime, kui see asukoht
// ulatub teisest.
pikendada string// cacheStart ja cacheEnd on Unixi ajatemplid, mis määravad vahemiku
// mille puhul väli cacheZone kehtib.
vahemälu Start int64
cacheEnd int64
// cacheZone osutab hetkel kehtivale tsoonile
// vahemik, mille määravad cacheStart ja cacheEnd.
cacheZone *tsoon
}
Paljud meetodid kasutavad Aeg ja Asukoht struktuurid, sealhulgas ajavööndi meetodid.
Ajavööndi teabe laadimine
Ajavööndi teabe laadimine on ajavöönditega töötamisel üks põhitoiminguid. The Laadimiskoht meetod pakub funktsioone ajavööndi teabe laadimiseks IANA ajavööndi andmebaas. The Laadimiskoht meetod võtab ajavööndi nime ja tagastab asukohateabe ja käsitsemise veateate. Kui see on ajavööndi teabe laadinud, loob see a aega ajavööndiga seotud struct eksemplar.
importida (
"fmt"
"aeg"
)funcpeamine() {
// Laadige Ameerika/New_Yorki ajavööndi asukoht
loc, err := aeg. Laadi asukoht("Ameerika/New_York")kui eks!= null {
fmt. Println("Viga asukoha laadimisel:", eksitus)
tagasi
}
// Hankige asukohas praegune kellaaeg
nüüd := aeg. Nüüd().In (loc)
fmt. Println("Praegune kellaaeg New Yorgis:", nüüd)
}
The sisse meetod Nüüd funktsioon võtab asukoha ja prindib sinna aja:
Lisaks saate kasutada FixedZone meetod asukoha praeguse kellaaja laadimiseks, kui teate asukoha stringi ja ajavööndi nihet UTC-st. Esiteks peate laadima praeguse kellaaja UTC-s ja seejärel kasutama FixedZone'i meetodit asukoht stringi ja nihke alusel enne asukoha edastamist ajameetodile In näiteks.
importida (
"fmt"
"aeg"
)funcpeamine() {
// Hankige praegune kellaaeg UTC-s
nüüd := aeg. Nüüd().UTC()// Lagose ajavööndi määramine
lagos := nüüd. Õigel ajal. FixedZone("WAT", 3600))
// Trüki mõlemas kohas praegune kellaaeg
fmt. Println("Praegune kellaaeg Lagoses:", Lagos)
}
The peamine funktsioon prindib konsooli Lagose praeguse kellaaja.
Ajavööndi kestuse mõõtmine
Ajapakett pakub Tsoon meetod a-ga seotud ajavööndi lühendi ja nihke hankimiseks aega. Aeg väärtus. Tsoonimeetod tagastab stringi, mis tähistab ajavööndi lühendit (nt "EST" "Ameerika/New_Yorki" jaoks) ja täisarvu, mis tähistab sekundite arvu UTC-st ida pool.
importida (
"fmt"
"aeg"
)funcpeamine() {
// Laadige Ameerika/New_Yorki ajavööndi asukoht
loc, err := aeg. Laadi asukoht("Ameerika/New_York")kui eks!= null {
fmt. Println("Viga asukoha laadimisel:", eksitus)
tagasi
}// Hankige praegune kellaaeg UTC-s ja määratud asukoht
t1 := aeg. Nüüd ()
t2 := t1.In (loc)// Hangi nihe sekundites iga ajavööndi kohta
//ajavööndite jaoks
_, nihe1 := t1.Tsoon()
_, nihe2 := t2.Tsoon()// Arvutage ajavööndi nihke kestus
// UTC ja Ameerika/New_Yorki vahel
kestus := nihe2 - nihe1
fmt. Printf("Ajavööndi vahetuse kestus" +
" UTC ja New Yorgi vahel on: %d sekundit", kestus)
}
Põhifunktsioonis mõõdab tsoonimeetod kahe ajavööndi vahelise ajavööndi nihke kestust (aeg. Ajaväärtused). The t1 muutuja on praegune kellaaeg UTC-s ja t2 muutuja on praegune aeg ajavööndis "Ameerika/New_York".
Funktsioon prindib kestus muutuja (ajavööndite nihke erinevus), mis tähistab ajavööndi nihet sekundites.
Ajavööndite vahelise aja hindamine
Ajavööndite vahelist aega saate hinnata, kui teate ajavööndite vahelist kestust. Võite kasutada Lisama teie aja In-meetodi meetod. Ajastruktuuri eksemplar, et lisada ajavööndis olevale ajale kestus.
importida (
"logi"
"aeg"// importida ajapakett
)funchindaAega(t aeg. Aeg, kestus aeg. kestus)aega.Aeg {
// laadige Aafrika/Lagose asukoht
asukoht, viga := aeg. Laadi asukoht("Aafrika/Lagos")
kui eks!= null {
logi. Println("Asukoha laadimisel ilmnes viga")
}
tagasi t. Asukohas (asukohas). Lisa (kestus)
}
The hindaAega funktsioon võtab aega. Ajajuhtum ja tüübi kestus aega. Kestus, tagastab ajavööndi kellaaja. See laadib "Aafrika/Lagose" praeguse kellaaja ja lisab ajale kestuse.
Manipuleerige kellaaega ja kuupäeva ajapaketiga
Ajapakett on väga mitmekülgne nii kellaaegade kui ka kuupäevadega töötamiseks. Ajapakett pakub selliseid funktsioone nagu Unix() aja teisendamiseks Unixi ajaks, Sleep() gorutiinide peatamiseks ja Format() ajaväärtuste stringiks vormindamiseks.