Go Academy · Oppitunti

Aikavyöhykkeet

Työskentele sijaintien kanssa

Oppitunti 4/413 vaihetta

Aikavyöhykkeet on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.

Aika sisältää sijainnin

Jokaisella time.Time-arvolla on siihen liittyvä sijainti (aikavyöhyke). Sama ajanhetki voidaan näyttää eri tavoin vyöhykkeestä riippuen.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.Location())
}

UTC ja paikallinen aika

Kaksi valmista sijaintia on aina käytettävissä:

  • time.UTC koordinoidulle yleisajalle.
  • time.Local koneen paikalliselle aikavyöhykkeelle.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.UTC().Hour())
}

Nimetyn aikavyöhykkeen lataaminen

time.LoadLocation(name) etsii IANA-aikavyöhykkeen, kuten "Europe/Istanbul" tai "America/New_York".

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, err := time.LoadLocation("UTC")
    fmt.Println(loc, err)
}

Aikavyöhykkeiden muuntaminen In-metodilla

t.In(loc) palauttaa saman ajanhetken eri aikavyöhykkeellä esitettynä. Taustalla oleva ajanhetki ei muutu, vain sen esitystapa muuttuu.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(time.UTC).Hour())
}

Sama ajanhetki, eri kellonajat

Keskipäivä UTC-aikaa on yksi ajanhetki, mutta toisella aikavyöhykkeellä oleva näkee eri kellonajan. Niiden Sub-erotus on nolla.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    u := t.UTC()
    fmt.Println(t.Sub(u))
}

Ajan luominen aikavyöhykkeelle

Anna sijainti time.Date-kutsun viimeisenä argumenttina luodaksesi ajan suoraan kyseiselle aikavyöhykkeelle.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, _ := time.LoadLocation("UTC")
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, loc)
    fmt.Println(t.Hour())
}

Aikavyöhykkeen siirtymän lukeminen

t.Zone() palauttaa aikavyöhykkeen lyhenteen ja sen siirtymän UTC-ajasta sekunteina.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    name, offset := t.Zone()
    fmt.Println(name, offset)
}

Kiinteät aikavyöhykkeet

Kun et tarvitse IANA-sääntöjen täydellistä tukea, time.FixedZone(name, offsetSeconds) luo yksinkertaisen vakiopoikkeaman sisältävän aikavyöhykkeen.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, loc)
    name, off := t.Zone()
    fmt.Println(name, off)
}

Muotoilu eri aikavyöhykkeillä

Muunna aika In-metodilla ennen muotoilua, jotta aikaleima näkyy lukijan aikavyöhykkeellä.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}

Tallenna UTC-aikana, näytä paikallisena aikana

Laajasti käytetty sääntö on: tallenna ja käsittele ajat UTC-aikana ja muunna ne paikalliselle aikavyöhykkeelle vasta, kun näytät ajat käyttäjille. Näin vältät epäselvyydet.

package main

import (
    "fmt"
    "time"
)

func main() {
    stored := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT+2", 2*3600)
    fmt.Println("shown:", stored.In(loc).Hour())
}

Latausvirheiden käsittely

LoadLocation voi epäonnistua, jos aikavyöhyketietokanta puuttuu tai nimi on tuntematon. Tarkista virhe aina.

package main

import (
    "fmt"
    "time"
)

func main() {
    _, err := time.LoadLocation("Mars/Olympus")
    if err != nil {
        fmt.Println("unknown zone")
    }
}

Pikatarkistus

Mitä t.In(loc) muuttaa?

Kertaus: aikavyöhykkeet

Opitte työskentelemään sijaintien kanssa:

  • Jokaisella ajalla on sijainti; UTC ja Local ovat valmiina.
  • Lataa nimetyt aikavyöhykkeet LoadLocation-metodilla tai luo siirtymiä FixedZone-metodilla.
  • Muunna ajat In-metodilla; tallenna UTC-aikana ja näytä paikallisena aikana.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 15, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT-5", -5*3600)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}
Aloita maksutta

Opi Go tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Aikavyöhykkeet” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “Aikavyöhykkeet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Aikavyöhykkeet”?

Työskentele sijaintien kanssa Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Aikavyöhykkeet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?

Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Aika ja kesto
  2. Muotoilu ja jäsentäminen
  3. Ajastimet ja tikkerit
  4. Aikavyöhykkeet
← Takaisin: Go Academy