Go Academy · Pelajaran

Zon Masa

Bekerja dengan lokasi

Pelajaran 4 daripada 413 langkah

Zon Masa ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.

Masa Membawa Lokasi

Setiap time.Time mempunyai lokasi yang berkaitan (zon waktu). Detik yang sama boleh dipaparkan secara berbeza bergantung pada zon.

package main

import (
    "fmt"
    "time"
)

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

UTC dan Setempat

Dua lokasi terbina dalam sentiasa tersedia:

  • time.UTC untuk Waktu Universal Selaras.
  • time.Local untuk zon setempat mesin.
package main

import (
    "fmt"
    "time"
)

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

Memuatkan Zon Bernama

time.LoadLocation(name) mencari zon IANA seperti "Europe/Istanbul" atau "America/New_York".

package main

import (
    "fmt"
    "time"
)

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

Menukar Zon dengan In

t.In(loc) mengembalikan detik yang sama tetapi dipaparkan dalam zon yang berbeza. Detik asas tidak berubah, hanya paparannya yang berubah.

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())
}

Detik Sama, Jam Berbeza

Tengah hari UTC ialah satu detik tunggal, tetapi pemerhati di zon lain melihat jam pada waktu setempat yang berbeza. Perbezaan Sub antara kedua-duanya ialah sifar.

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))
}

Membina Masa dalam Zon

Hantar lokasi sebagai argumen terakhir kepada time.Date untuk mencipta masa secara terus dalam zon tersebut.

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())
}

Membaca Ofset Zon

t.Zone() mengembalikan singkatan zon dan ofsetnya daripada UTC dalam unit saat.

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)
}

Zon Tetap

Apabila anda tidak memerlukan peraturan IANA yang lengkap, time.FixedZone(name, offsetSeconds) mencipta zon mudah dengan ofset tetap.

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)
}

Memformat Merentas Zon

Tukar dengan In sebelum memformat untuk memaparkan cap masa dalam zon pembaca.

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"))
}

Simpan UTC, Paparkan Setempat

Peraturan yang digunakan secara meluas: simpan dan lakukan pengiraan dalam UTC, kemudian tukar kepada zon setempat hanya apabila memaparkan masa kepada pengguna. Ini mengelakkan kekeliruan.

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())
}

Mengendalikan Ralat Pemuatan

LoadLocation boleh gagal jika pangkalan data zon tiada atau namanya tidak diketahui. Sentiasa semak ralat tersebut.

package main

import (
    "fmt"
    "time"
)

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

Semakan Pantas

Apakah yang diubah oleh t.In(loc)?

Ulang Kaji: Zon Waktu

Anda telah mempelajari cara menggunakan lokasi:

  • Setiap masa mempunyai lokasi; UTC dan Local tersedia secara terbina dalam.
  • Muatkan zon bernama dengan LoadLocation atau bina ofset dengan FixedZone.
  • Tukar dengan In; simpan dalam UTC dan paparkan dalam zon setempat.
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"))
}
Percuma untuk bermula

Pelajari Go dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Zon Masa” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Zon Masa”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Zon Masa”?

Bekerja dengan lokasi Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Go Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Zon Masa” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Masa dan Tempoh
  2. Pemformatan dan Penguraian
  3. Pemasa dan Ticker
  4. Zon Masa
← Kembali ke Go Academy