Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

Az időzónák kulcsfontosságúak minden olyan alkalmazásban, amely dátumokkal és időpontokkal foglalkozik. Természetesen ez különösen igaz azokra az alkalmazásokra, amelyek kontinensek és helyek felhasználóit szolgálják ki. Az időzónák határozzák meg a koordinált világidő (UTC) eltolását a világ egyes helyein. Létfontosságú szerepet játszanak a pontos és megbízható időkezelés biztosításában.

A Go szabványos könyvtárában biztosítja az időcsomagot az idő- és időzónák kezeléséhez. Az időcsomag segítségével különböző helyeken lekérheti és konvertálhatja az időzónákat.

Az Időcsomag

A idő csomag funkcionalitást biztosít munkaidővel és dátummal, az idő mérése és megjelenítése, valamint a dátumok manipulálása Gergely-naptár segítségével szökőmásodpercek nélkül.

Az időcsomag biztosítja a Időstruktúra típusa tartalmazza az időzónák beállítására használható hely mezőt.

Az időcsomagot import utasítással importálhatja.

import"idő"

Itt látható az időstruktúra típusa és mezői. A mezőket nem exportálták, így hiányoznak a hivatalos dokumentációból.

csomag fő-

típus Idő struct {
// fal a falidő a runtime.nanotime() által visszaadott formátumban
// függvény.
fal uint64

// ext a monoton óra olvasása a visszaadott formátumban
// runtime.nanotime().
ext int64

// A loc egy mutató az ehhez az időhöz tartozó Location struktúrára.
loc *Helyszín
}

típus Elhelyezkedés struct {
// a név az időzóna neve, például "UTC" vagy "PST".
név húr

// zóna információkat tartalmaz az időzóna rövidítéséről, eltolásáról,
// és a hely egyetlen időzónájára vonatkozik.
zóna []zóna

// tx információkat tartalmaz arról, hogy mikor az időzóna rövidítése ill
// eltolja a hely változásait.
tx []zoneTrans

// kiterjesztése tartalmazza a szülő időzóna nevét, ha ez a hely
// egy másikból nyúlik ki.
kiterjeszt húr

// A cacheStart és a cacheEnd Unix időbélyegek, amelyek meghatározzák a tartományt
// amelyre a cacheZone mező érvényes.
cacheStart int64
cacheEnd int64

// A cacheZone arra a zónára mutat, amely jelenleg érvényes az adott időpontban
// a cacheStart és a cacheEnd által meghatározott tartomány.
cacheZone *zóna
}

Számos módszer használja az Idő ill Elhelyezkedés struktúrák, beleértve az időzóna metódusokat is.

Időzóna információ betöltése

Az időzóna információ betöltése az egyik alapvető művelet az időzónákkal való munka során. A LoadLocation metódus funkcionalitást biztosít az időzóna információinak betöltéséhez a IANA időzóna adatbázis. A LoadLocation metódus beveszi az időzóna nevét, és visszaadja a helyadatokat és a kezelési hibát. Miután betöltötte az időzóna információit, létrehoz egy idő az időzónához társított struct példány.

import (
"fmt"
"idő"
)

funcfő-() {
// Az Amerika/New_York időzóna helyének betöltése
loc, err := idő. LoadLocation("Amerika/New_York")

ha hiba! = nulla {
fmt. Println("Hiba a hely betöltésekor:", hiba)
Visszatérés
}

// Az aktuális idő lekérése egy adott helyen
most := idő. Most().In (loc)
fmt. Println("Jelenlegi idő New Yorkban:", Most)
}

A Ban ben módszere a Most A funkció elfoglal egy helyet, és kiírja az időt:

Ezenkívül használhatja a FixedZone módszer az aktuális idő betöltésére egy helyen, ha ismeri a hely karakterláncát és az időzóna eltolását az UTC-től. Először be kell töltenie az aktuális időt UTC-ben, majd a FixedZone metódus segítségével töltse be a hely a karakterlánc és az eltolás alapján, mielőtt átadná a helyet az In metódusnak az idő szerint példa.

import (
"fmt"
"idő"
)

funcfő-() {
// Az aktuális idő lekérése UTC-ben
most := idő. Most().UTC()

// Állítsa be Lagos időzónáját
lagos := most. Időben. FixedZone("WAT", 3600))

// Az aktuális idő kinyomtatása mindkét helyen
fmt. Println("Jelenlegi idő Lagosban:", lagos)
}

A fő- funkció kiírja a konzolra a pontos időt Lagosban.

Időzóna időtartamának mérése

Az időcsomag biztosítja a Zóna az a-hoz tartozó időzóna rövidítésének és eltolásának lekérésére szolgáló módszer idő. Idő érték. A Zone metódus visszaadja az időzóna rövidítését jelző karakterláncot (pl. „EST” az „Amerika/New_York”) és egy egész számot, amely az UTC-től keletre lévő másodpercek számát jelzi.

import (
"fmt"
"idő"
)

funcfő-() {
// Az Amerika/New_York időzóna helyének betöltése
loc, err := idő. LoadLocation("Amerika/New_York")

ha hiba! = nulla {
fmt. Println("Hiba a hely betöltésekor:", hiba)
Visszatérés
}

// Az aktuális idő lekérése UTC-ben és a megadott helyen
t1 := idő. Most()
t2 := t1.In (loc)

// Minden időzóna eltolása másodpercben
//az időzónákhoz
_, eltolás1 := t1.Zóna()
_, offset2 := t2.Zóna()

// Az időzóna-eltolás időtartamának kiszámítása
// UTC és Amerika/New_York között
időtartam := offset2 - offset1

fmt. Printf("Az időzóna eltolás időtartama" +
" UTC és New York között: %d másodperc", időtartam)
}

A fő funkcióban a zóna módszer a két időzóna közötti időzóna eltolódás időtartamát méri (idő. időértékek). A t1 változó az aktuális idő UTC-ben, és a t2 változó az aktuális idő az "Amerika/New_York" időzónában.

A funkció kiírja a időtartama változó (az időzónák közötti eltolás különbsége), amely az időzóna eltolódását jelenti másodpercekben.

Időzónák közötti idő értékelése

Kiértékelheti az időzónák közötti időt, ha ismeri az időzónák közötti időtartamot. Használhatja a Hozzáadás a te időd In módszerének módszere. Időstruktúra-példány, amely egy időzónában lévő időponthoz egy időtartamot ad hozzá.

import (
"napló"
"idő"// importálja az időcsomagot
)

funcértékelésTime(t idő. Idő, időtartam, idő. időtartam)idő.Idő {
// Afrika/Lagos helyének betöltése
hely, err := idő. LoadLocation("Afrika/Lagos")

ha hiba! = nulla {
log. Println("Hiba történt a hely betöltésekor")
}

Visszatérés t. Itt (hely). Hozzáadás (időtartam)
}

A értékelésTime a funkció időbe telik. Időpéldány és típus időtartama idő. Időtartam, visszaadja az időt az időzónában. Betölti az aktuális időt "Afrikában/Lagosban", és időtartamot ad az időhöz.

Manipulálja az időt és a dátumot az időcsomaggal

Az időcsomag nagyon sokoldalú az időpontokkal és dátumokkal való munkavégzéshez. Az időcsomag olyan funkciókat biztosít, mint a Unix() az idő Unix idővé konvertálásához, a Sleep() a gorutinok szüneteltetéséhez és a Format() az időértékek karakterláncokká formázásához.