Tanggal dan waktu adalah elemen penting dalam hampir semua aplikasi. JavaScript menyediakan berbagai alat untuk bekerja dengan date & time, mulai dari pengaturan zona waktu, manipulasi tanggal, formatting, hingga perhitungan durasi.
Pada bab ini, kita akan membahas semua konsep tersebut secara jelas dan praktis.
Contents
1. Zona Waktu di JavaScript
JavaScript bekerja dengan waktu lokal komputer secara default, tetapi juga mendukung UTC (Coordinated Universal Time) dan penyesuaian zona waktu tertentu.
Contoh:
const now = new Date();
console.log("Waktu lokal:", now.toString());
console.log("Waktu UTC:", now.toUTCString());
console.log("Zona waktu (offset):", now.getTimezoneOffset(), "menit");
Tips:
Untuk menampilkan waktu di zona tertentu:
const jakartaTime = new Intl.DateTimeFormat("id-ID", { timeZone: "Asia/Jakarta" }).format(new Date());
console.log(jakartaTime);
2. Manipulasi Tanggal dengan Mudah
Kamu bisa menambah, mengurangi, atau mengubah bagian tertentu dari tanggal, seperti hari, bulan, atau tahun.
Contoh:
let tanggal = new Date();
// Menambahkan 5 hari
tanggal.setDate(tanggal.getDate() + 5);
// Mengurangi 2 bulan
tanggal.setMonth(tanggal.getMonth() - 2);
// Mengubah tahun
tanggal.setFullYear(2026);
console.log(tanggal.toString());
Catatan: JavaScript secara otomatis menyesuaikan overflow, misal 32 Januari menjadi 1 Februari.
3. Formatting Tanggal: Tampil Lebih Rapi
3.1 Menggunakan metode bawaan
const now = new Date();
console.log(now.toDateString()); // Kamis, 12 Desember 2025
console.log(now.toTimeString()); // 10:30:45 GMT+0700
console.log(now.toISOString()); // 2025-12-12T03:30:45.000Z
3.2 Menggunakan Intl.DateTimeFormat
const date = new Date();
const formatted = new Intl.DateTimeFormat("id-ID", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
}).format(date);
console.log(formatted); // Kamis, 12 Desember 2025, 10:30:45
Kelebihan: Mendukung locale dan zona waktu secara fleksibel.
4. Perhitungan Durasi: Dari Milidetik Hingga Hari
Durasi antar tanggal dapat dihitung dalam milidetik, kemudian dikonversi ke detik, menit, jam, atau hari.
Contoh:
const start = new Date("2025-12-01");
const end = new Date("2025-12-12");
const diffMs = end - start;
const diffDays = diffMs / (1000 * 60 * 60 * 24);
console.log(`Durasi: ${diffDays} hari`);
Konversi dasar:
- 1 detik = 1000 ms
- 1 menit = 60 detik
- 1 jam = 60 menit
- 1 hari = 24 jam
Kesimpulan
Menguasai date & time di JavaScript berarti memahami:
- Zona waktu: Offset lokal vs UTC.
- Manipulasi tanggal: Menambah, mengurangi, dan mengubah tanggal.
- Formatting: Menampilkan tanggal sesuai kebutuhan.
- Durasi: Menghitung selisih waktu antar tanggal dengan presisi.
Dengan pemahaman ini, pengelolaan waktu di aplikasi JavaScript menjadi lebih fleksibel dan akurat.