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.UTCuntuk Waktu Universal Terkoordinasi.time.Localuntuk 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;
UTCdanLocaltersedia secara bawaan. - Muat zona bernama dengan
LoadLocationatau buat offset denganFixedZone. - 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.