Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Časové pásma sú kľúčové pre každú aplikáciu, ktorá sa zaoberá dátumami a časmi. To samozrejme platí najmä pre aplikácie, ktoré slúžia používateľom na rôznych kontinentoch a miestach. Časové pásma určujú posun od koordinovaného svetového času (UTC) pre konkrétne miesta po celom svete. Zohrávajú dôležitú úlohu pri zabezpečovaní presného a spoľahlivého spracovania času.

Go poskytuje časový balík vo svojej štandardnej knižnici na prácu s časom a časovými pásmami. Pomocou časového balíka môžete načítať a previesť časové pásma na rôznych miestach.

Časový balík

The čas balík poskytuje funkcie pre práca s časmi a dátumami, meranie a zobrazovanie času a manipulácia s dátumami pomocou gregoriánskeho kalendára bez prestupných sekúnd.

Časový balík poskytuje a Častyp štruktúry obsahujúce pole polohy, ktoré môžete použiť na nastavenie časových pásiem.

Časový balík môžete importovať pomocou príkazu importu.

instagram viewer
importovať"čas"

Tu je typ časovej štruktúry a jej polia. Polia nie sú exportované, takže v oficiálnej dokumentácii chýbajú.

balík Hlavná

typu Čas štrukturovať {
// stena je čas steny vo formáte, ktorý vrátil runtime.nanotime()
// funkcia.
stena uint64

// ext je monotónne čítanie hodín vo formáte, ktorý vracia
// runtime.nanotime().
ext int64

// loc je ukazovateľ na štruktúru Location spojenú s týmto časom.
loc *Poloha
}

typu Poloha štrukturovať {
// názov je názov časového pásma, napríklad "UTC" alebo "PST".
názov reťazec

// zóna obsahuje informácie o skratke časového pásma, offset,
// a pravidlo pre jedno časové pásmo v mieste.
zóna []zóna

// tx obsahuje informáciu o tom, kedy je skratka časového pásma resp
// posun zmien pre umiestnenie.
TX []zoneTrans

// extend obsahuje názov nadradeného časového pásma, ak je toto umiestnenie
// presahuje z iného.
predĺžiť reťazec

// cacheStart a cacheEnd sú unixové časové pečiatky, ktoré určujú rozsah
// pre ktoré je pole cacheZone platné.
cacheStart int64
cacheEnd int64

// cacheZone ukazuje na zónu, ktorá je aktuálne platná pre daný čas
// rozsah definovaný parametrami cacheStart a cacheEnd.
cacheZone *zóna
}

Mnoho metód používa čas a Poloha štruktúr, vrátane metód časového pásma.

Načítavajú sa informácie o časovom pásme

Načítanie informácií o časovom pásme je jednou zo základných operácií pri práci s časovými pásmami. The LoadLocation metóda poskytuje funkcie na načítanie informácií o časovom pásme z Databáza časových pásiem IANA. The LoadLocation metóda prevezme názov časovej zóny a vráti informácie o polohe a chybu pri spracovaní. Po načítaní informácií o časovom pásme vytvorí a čas inštancia štruktúry spojená s časovým pásmom.

importovať (
"fmt"
"čas"
)

funcHlavná() {
// Načítajte umiestnenie časového pásma pre Ameriku/New_York
loc, chyba := čas. LoadLocation("Amerika/New_York")

ak chyba!= nula {
fmt. Println("Chyba pri načítavaní miesta:", chyba)
vrátiť
}

// Získanie aktuálneho času na mieste
teraz := čas. Teraz().In (loc)
fmt. Println("Aktuálny čas v New Yorku:", teraz)
}

The In metóda Teraz funkcia vezme miesto a vypíše tam čas:

Okrem toho môžete použiť FixedZone metóda na načítanie aktuálneho času v mieste, ak poznáte reťazec polohy a posun časového pásma od UTC. Najprv budete musieť načítať aktuálny čas v UTC a potom použijete metódu FixedZone na načítanie umiestnenie na základe reťazca a posunu pred odovzdaním polohy do metódy času príklad.

importovať (
"fmt"
"čas"
)

funcHlavná() {
// Získanie aktuálneho času v UTC
teraz := čas. Teraz().UTC()

// Nastavte časové pásmo pre Lagos
lagos := teraz. Na čas. FixedZone("WAT", 3600))

// Vytlačí aktuálny čas na oboch miestach
fmt. Println("Aktuálny čas v Lagose:", Lagos)
}

The Hlavná funkcia vytlačí aktuálny čas v Lagose do konzoly.

Meranie trvania časového pásma

Časový balík poskytuje Zóna metóda na získanie skratky a posunu časového pásma spojeného s a čas. Čas hodnotu. Metóda Zone vracia reťazec predstavujúci skratku časového pásma (napr. „EST“ pre „Amerika/New_York“) a celé číslo predstavujúce počet sekúnd východne od UTC.

importovať (
"fmt"
"čas"
)

funcHlavná() {
// Načítajte umiestnenie časového pásma pre Ameriku/New_York
loc, chyba := čas. LoadLocation("Amerika/New_York")

ak chyba!= nula {
fmt. Println("Chyba pri načítavaní miesta:", chyba)
vrátiť
}

// Získanie aktuálneho času v UTC a zadanej polohy
t1 := čas. teraz()
t2 := t1.In (loc)

// Získanie posunu v sekundách pre každé časové pásmo
//pre časové pásma
_, offset1 := t1.Zone()
_, offset2 := t2.Zone()

// Vypočítajte trvanie posunu časového pásma
// medzi UTC a Amerikou/New_Yorkom
trvanie := posun2 - posun1

fmt. Printf("Trvanie posunu časového pásma" +
"medzi UTC a New Yorkom je: %d sekúnd", trvanie)
}

V hlavnej funkcii metóda Zone meria trvanie posunu časového pásma medzi dvoma časovými pásmami (čas. Časové hodnoty). The t1 premenná je aktuálny čas v UTC a t2 premenná je aktuálny čas v časovom pásme „Amerika/New_York“.

Funkcia vytlačí trvanie premenná (rozdiel v posune medzi časovými pásmami) predstavujúca posun časového pásma v sekundách.

Vyhodnotenie času medzi časovými pásmami

Čas medzi časovými pásmami môžete vyhodnotiť, ak poznáte trvanie medzi časovými pásmami. Môžete použiť Pridať metóda In metódy svojho času. Inštancia časovej štruktúry na pridanie trvania k času v časovom pásme.

importovať (
"log"
"čas"// import časového balíka
)

funcvyhodnotiťČas(čas t. Čas, čas trvania. trvanie)čas.Čas {
// načítať umiestnenie pre Afriku/Lagos
miesto, chyba := čas. LoadLocation("Afrika/Lagos")

ak chyba!= nula {
log. Println("Pri načítavaní polohy sa vyskytla chyba")
}

vrátiť t. V (umiestnenie). Pridať (trvanie)
}

The vyhodnotiťČas funkcia trvá určitý čas. Inštancia času a trvanie typu čas. Trvanie, vráti čas v časovom pásme. Načíta aktuálny čas v "Afrika/Lagos" a pridá k času trvanie.

Manipulujte s časom a dátumom pomocou časového balíka

Časový balík je veľmi všestranný pre prácu s časmi aj dátumami. Časový balík poskytuje funkcie ako Unix() na konverziu času na čas Unix, Sleep() na pozastavenie gorutín a Format() na formátovanie časových hodnôt na reťazec.