Time, parsing, dan format waktu
Baca, format, dan ubah representasi waktu.
Pahami konsepnya
time.Now() memberi waktu saat ini; time.Date(...) membangun waktu spesifik. Nilai time.Time membawa tanggal, jam, zona, dan lokasi sekaligus — perbandingan (Before/After/Equal) serta selisih (.Sub) bekerja benar lintas zona.
Menyusun tampilannya unik di Go: alih-alih kode seperti YYYY-MM-DD, layout ditulis dengan waktu referensi Mon Jan 2 15:04:05 MST 2006 — angka-angkanya sengaja 1 (bulan), 2 (tanggal), 3 (jam), 4 (menit), 5 (detik), 2006 (tahun). t.Format("2006-01-02 15:04") menghasilkan bentuk yang kamu tulis polanya; konstanta siap pakai seperti time.RFC3339 juga tersedia.
Parsing adalah arah sebaliknya: time.Parse(layout, teks) membaca teks waktu menjadi time.Time memakai layout yang sama. Kegagalan format mengembalikan error — selalu periksa. Kombinasi Format + Parse menutup hampir semua kebutuhan: dari API, berkas log, sampai input pengguna.
Coba contoh kode
package main
import (
"fmt"
"time"
)
func main() {
sekarang := time.Now()
fmt.Println(sekarang.Format("Senin, 2 Januari 2006 15:04"))
fmt.Println(sekarang.Format(time.RFC3339))
}Layout "Senin, 2 Januari 2006 15:04" dipenuhi otomatis oleh nilai waktu — Go mengenali tiap elemen referensinya (Senin=Monday, 2=tanggal, Januari=month-name, 15 jam, 04 menit) dan menggantinya dengan nilai nyata. time.RFC3339 menghasilkan format standar internet "2006-01-02T15:04:05Z07:00".
Parsing teks menjadi waktu
func main() {
teks := "2026-10-10 08:30"
t, err := time.Parse("2006-01-02 15:04", teks)
if err != nil {
fmt.Println("format salah:", err)
return
}
fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour())
fmt.Println(t.Format("02/01/2006"))
}Layout yang sama yang dipakai Format dipakai Parse — "2006-01-02 15:04" mengajari parser di mana tiap bagian berada. Setelah jadi time.Time, seluruh method tersedia: ambil komponen, bandingkan, atau cetak ulang dalam format lain (02/01/2006).
Latihan singkat
Uji: parse tanggal `2007-01-15` dengan layout `2006-01-02` lalu cetak tahunnya — harus persis `2007`.