0Pricing
Go Academy · Pelajaran

Zona Waktu

Bekerja dengan lokasi

Zona Waktu adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Waktu Membawa Lokasi

Setiap time.Time memiliki lokasi terkait (zona waktu). Momen yang sama dapat ditampilkan secara berbeda bergantung pada zonanya.

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 Lokal

Dua lokasi bawaan selalu tersedia:

  • time.UTC untuk Waktu Universal Terkoordinasi.
  • time.Local untuk zona lokal 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())
}

Memuat Zona Bernama

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

package main

import (
    "fmt"
    "time"
)

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

Mengonversi Zona dengan In

t.In(loc) mengembalikan momen yang sama dalam tampilan zona berbeda. Momen yang mendasarinya tidak berubah, hanya tampilannya.

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

Momen Sama, Jam Berbeda

Tengah hari UTC adalah satu momen, tetapi pengamat di zona lain melihat jam dinding yang berbeda. Perbedaan Sub di antara keduanya adalah nol.

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

Membuat Waktu dalam Suatu Zona

Berikan lokasi sebagai argumen terakhir kepada time.Date untuk membuat waktu secara langsung dalam zona 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 Offset Zona

t.Zone() mengembalikan singkatan zona dan offset-nya dari UTC dalam satuan detik.

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

Zona Tetap

Jika Anda tidak memerlukan aturan IANA lengkap, time.FixedZone(name, offsetSeconds) membuat zona sederhana dengan offset konstan.

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 Lintas Zona

Lakukan konversi dengan In sebelum memformat agar stempel waktu ditampilkan dalam zona 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 dalam UTC, Tampilkan dalam Lokal

Aturan yang banyak digunakan: simpan dan lakukan perhitungan dalam UTC, lalu konversikan ke zona lokal hanya saat menampilkan waktu kepada pengguna. Cara ini menghindari kerancuan.

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

Menangani Error Pemuatan

LoadLocation dapat gagal jika basis data zona tidak tersedia atau namanya tidak dikenal. Selalu periksa error tersebut.

package main

import (
    "fmt"
    "time"
)

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

Pemeriksaan Singkat

Apa yang diubah oleh t.In(loc)?

Ringkasan: Zona Waktu

Anda telah mempelajari cara bekerja dengan lokasi:

  • Setiap waktu memiliki lokasi; UTC dan Local tersedia secara bawaan.
  • Muat zona bernama dengan LoadLocation atau buat offset dengan FixedZone.
  • Lakukan konversi dengan In; simpan dalam UTC dan tampilkan dalam lokal.
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"))
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Zona Waktu” gratis?

Ya — teks lengkap “Zona Waktu” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Zona Waktu”?

Bekerja dengan lokasi Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Zona Waktu” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Waktu dan Durasi
  2. Pemformatan dan Penguraian
  3. Timer dan Ticker
  4. Zona Waktu
← Kembali ke Go Academy