Laika joslas ir ļoti svarīgas jebkurai lietojumprogrammai, kas nodarbojas ar datumiem un laikiem. Protams, tas jo īpaši attiecas uz lietotnēm, kas apkalpo lietotājus dažādos kontinentos un vietās. Laika joslas nosaka nobīdi no koordinētā universālā laika (UTC) noteiktām vietām visā pasaulē. Tiem ir būtiska nozīme, nodrošinot precīzu un uzticamu laika apstrādi.
Go nodrošina laika paketi savā standarta bibliotēkā darbam ar laika un laika joslām. Izmantojot laika pakotni, varat iegūt un konvertēt laika joslas dažādās vietās.
Laika pakete
The laiks pakotne nodrošina funkcionalitāti darbs ar laikiem un datumiem, mērot un rāda laiku un manipulējot ar datumiem, izmantojot Gregora kalendāru bez lēciena sekundēm.
Laika pakete nodrošina a Laiksstruktūras veids satur atrašanās vietas lauku, ko varat izmantot laika joslu iestatīšanai.
Laika paketi var importēt ar importēšanas paziņojumu.
imports"laiks"
Šeit ir norādīts laika struktūras veids un tā lauki. Lauki nav eksportēti, tāpēc tie nav iekļauti oficiālajā dokumentācijā.
iepakojums galvenais
veids Laiks struktūra {
// siena ir sienas laiks formātā, ko atgriež izpildlaiks.nanotime()
// funkcija.
siena uint64// ext ir monotoniskais pulksteņa nolasījums formātā, ko atgrieza
// izpildlaiks.nanotime().
ext int64// loc ir rādītājs uz atrašanās vietas struktūru, kas saistīta ar šo laiku.
loc *Atrašanās vieta
}veids Atrašanās vieta struktūra {
// nosaukums ir laika joslas nosaukums, piemēram, "UTC" vai "PST".
nosaukums virkne// zonā ir informācija par laika joslas saīsinājumu, nobīdi,
// un nosaka vienu laika joslu šajā atrašanās vietā.
zona []zona// tx satur informāciju par to, kad laika joslas saīsinājums vai
// kompensēt atrašanās vietas izmaiņas.
tx []zoneTrans// paplašinājums satur vecāklaika joslas nosaukumu, ja šī atrašanās vieta
// stiepjas no cita.
pagarināt virkne// cacheStart un cacheEnd ir Unix laikspiedoli, kas nosaka diapazonu
// kuriem ir derīgs lauks cacheZone.
cacheStart int64
cacheEnd int64
// cacheZone norāda uz zonu, kas pašlaik ir derīga konkrētajam laikam
// diapazons, ko nosaka cacheStart un cacheEnd.
cacheZone *zona
}
Daudzas metodes izmanto Laiks un Atrašanās vieta struktūras, tostarp laika joslu metodes.
Notiek laika joslas informācijas ielāde
Laika joslas informācijas ielāde ir viena no pamata darbībām, strādājot ar laika joslām. The LoadLocation metode nodrošina funkcionalitāti laika joslas informācijas ielādei no IANA laika joslu datu bāze. The LoadLocation metode ņem laika joslas nosaukumu un atgriež atrašanās vietas informāciju un apstrādes kļūdu. Kad tas ir ielādējis laika joslas informāciju, tas izveido a laiks struct instance, kas saistīta ar laika joslu.
imports (
"fmt"
"laiks"
)funcgalvenais() {
// Ielādējiet Amerikas/Ņujorkas laika joslas atrašanās vietu
loc, err := laiks. LoadLocation("Amerika/Ņujorka")ja kļūda! = nulle {
fmt. Println("Kļūda, ielādējot atrašanās vietu:", kļūda)
atgriezties
}
// Iegūstiet pašreizējo laiku konkrētajā vietā
tagad := laiks. Tagad().In (loc)
fmt. Println("Pašreizējais laiks Ņujorkā:", tagad)
}
The In metode Tagad funkcija aizņem vietu un izdrukā tur laiku:
Turklāt jūs varat izmantot Fiksētā zona metode, lai ielādētu pašreizējo laiku atrašanās vietā, ja zināt atrašanās vietas virkni un laika joslas nobīdi no UTC. Pirmkārt, jums būs jāielādē pašreizējais laiks UTC, un pēc tam izmantojiet FixedZone metodi, lai ielādētu atrašanās vieta, pamatojoties uz virkni un nobīdi pirms atrašanās vietas nodošanas laika metodei piemēram.
imports (
"fmt"
"laiks"
)funcgalvenais() {
// Iegūstiet pašreizējo laiku UTC
tagad := laiks. Tagad().UTC()// Iestatiet Lagosas laika joslu
lagos := tagad. Laikā. FixedZone("WAT", 3600))
// Drukāt pašreizējo laiku abās vietās
fmt. Println("Pašreizējais laiks Lagosā:", Lagosa)
}
The galvenais funkcija konsolē izdrukā pašreizējo laiku Lagosā.
Laika joslas ilguma mērīšana
Laika pakete nodrošina Zona metode ar a saistītās laika joslas saīsinājuma un nobīdes izgūšanai laiks. Laiks vērtību. Zonas metode atgriež virkni, kas apzīmē laika joslas saīsinājumu (piemēram, "EST" nozīmē "Amerika/Ņujorka") un veselu skaitli, kas apzīmē sekunžu skaitu uz austrumiem no UTC.
imports (
"fmt"
"laiks"
)funcgalvenais() {
// Ielādējiet Amerikas/Ņujorkas laika joslas atrašanās vietu
loc, err := laiks. LoadLocation("Amerika/Ņujorka")ja kļūda! = nulle {
fmt. Println("Kļūda, ielādējot atrašanās vietu:", kļūda)
atgriezties
}// Iegūstiet pašreizējo laiku UTC un norādītajā vietā
t1 := laiks. Tagad ()
t2 := t1.In (loc)// Iegūstiet nobīdi sekundēs katrai laika joslai
//laika zonām
_, nobīde1 := t1.Zona()
_, nobīde2 := t2.Zona()// Aprēķināt laika joslu maiņas ilgumu
// starp UTC un Ameriku/Ņujorku
ilgums := nobīde2 - nobīde1
fmt. Printf("Laika joslas maiņas ilgums" +
" starp UTC un Ņujorku ir: %d sekundes", ilgums)
}
Galvenajā funkcijā zonas metode mēra laika joslu maiņas ilgumu starp divām laika zonām (laiks. Laika vērtības). The t1 mainīgais ir pašreizējais laiks UTC un t2 mainīgais ir pašreizējais laiks laika joslā "Amerika/Ņujorka".
Funkcija izdrukā ilgums mainīgais (nobīdes starpība starp laika zonām), kas attēlo laika joslu nobīdi sekundēs.
Laika novērtēšana starp laika zonām
Varat novērtēt laiku starp laika joslām, ja zināt ilgumu starp laika joslām. Jūs varat izmantot Pievienot sava laika In metodes metode. Laika struktūras gadījums, lai laika joslā norādītajam laikam pievienotu ilgumu.
imports (
"baļķis"
"laiks"// importēt laika paketi
)funcnovērtētLaiks(t laiks. Laiks, ilgums laiks. Ilgums)laiks.Laiks {
// ielādējiet Āfrikas/Lagosas atrašanās vietu
vieta, kļūda := laiks. LoadLocation("Āfrika/Lagosa")
ja kļūda! = nulle {
žurnāls. Println("Ielādējot atrašanās vietu, radās kļūda")
}
atgriezties t. Vietnē (atrašanās vieta). Pievienot (ilgums)
}
The novērtētLaiks funkcija aizņem kādu laiku. Laika gadījums un veida ilgums laiks. Ilgums, atgriežot laiku laika joslā. Tas ielādē pašreizējo laiku “Āfrikā/Lagosā” un pievieno laikam ilgumu.
Manipulējiet laiku un datumu, izmantojot laika paketi
Laika pakete ir ļoti daudzpusīga darbam gan ar laikiem, gan datumiem. Laika pakotne nodrošina tādas funkcijas kā Unix() laika konvertēšanai uz Unix laiku, Sleep() gorutīnu apturēšanai un Format() laika vērtību formatēšanai virknē.