Date: Bekerja dengan Tanggal dan Waktu
Membuat dan memformat tanggal dengan object Date, plus perhitungan selisih waktu.
Waktu dalam program
Hampir semua aplikasi butuh tanggal: tanggal lahir, jadwal, timestamp transaksi. JavaScript menyediakannya lewat object Date.
Membuat Date
let sekarang = new Date();
console.log(sekarang); // tanggal dan waktu saat ini
let spesifik = new Date(2026, 9, 8); // 8 Oktober 2026
let dariString = new Date("2026-10-08"); // dari string ISOPerhatikan: new Date(2026, 9, 8) memakai bulan 9 untuk Oktober. Ya, memang membingungkan, dan itu warisan yang harus dihafal.
Membaca komponen tanggal
let d = new Date(2026, 9, 8, 14, 30); // 8 Okt 2026, 14:30
console.log(d.getFullYear()); // 2026
console.log(d.getMonth()); // 9 (0 = Januari!)
console.log(d.getDate()); // 8, tanggal
console.log(d.getDay()); // 4, hari (0 = Minggu)
console.log(d.getHours()); // 14
console.log(d.getMinutes()); // 30Untuk nama hari/bulan dalam bahasa Indonesia, buat array sendiri:
let namaHari = ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"];
console.log(namaHari[d.getDay()]); // "Kamis"Timestamp dan selisih waktu
Date menyimpan waktu sebagai milidetik sejak 1 Januari 1970 (epoch). Ini memudahkan perhitungan selisih:
let mulai = new Date("2026-10-01");
let selesai = new Date("2026-10-08");
let selisihHari = (selesai - mulai) / (1000 * 60 * 60 * 24);
console.log(selisihHari); // 7
console.log(Date.now()); // timestamp saat ini, tanpa newMengurangi dua Date langsung menghasilkan selisih milidetik. Date.now() adalah cara cepat dapat timestamp untuk mengukur durasi eksekusi.
Catatan teknis: Bulan dimulai dari 0 (Januari = 0, Desember = 11) tapi tanggal dimulai dari 1. Ini inkonsistensi paling terkenal di Date. Selalu ingat saat membuat Date manual. Untuk parsing string tanggal, format ISO "2026-10-08" paling aman lintas browser.
Format tanggal Indonesia manual
Format bawaan Date kurang cocok untuk pengguna Indonesia. Buat formatter sendiri:
function formatID(date) {
let hari = ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"];
let bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun",
"Jul", "Agu", "Sep", "Okt", "Nov", "Des"];
let d = date.getDate();
return hari[date.getDay()] + ", " + d +
" " + bulan[date.getMonth()] + " " + date.getFullYear();
}
console.log(formatID(new Date(2026, 9, 8))); // "Kamis, 8 Okt 2026"Untuk angka tanggal, tidak perlu leading zero manual di contoh ini, tapi kalau butuh format 08, gunakan String(d).padStart(2, "0"). Formatter kecil seperti ini biasanya ditaruh di file util agar bisa dipakai di seluruh aplikasi.
Kesimpulan
Date cukup untuk kebutuhan umum: tampilkan tanggal, hitung selisih, simpan timestamp. Untuk aplikasi dengan logika tanggal kompleks (zona waktu, recurring event), pertimbangkan library seperti date-fns.