Menghitung Selisih Waktu Dengan PHP

Menghitung Selisih Waktu Dengan PHP

Menghitung Selisih Waktu Dengan PHP adalah kebutuhan umum saat kalian membuat fitur laporan, masa aktif, durasi kerja, hingga hitung mundur event.

Halo teman-teman! Sering bingung memilih cara yang tepat untuk menghitung beda waktu? Tenang, pada artikel ini kodelyly.com akan membahas cara paling akurat, mudah, dan aman digunakan, lengkap dengan contoh kode singkat.

Menghitung Selisih Waktu Dengan PHP

1) Metode Paling Akurat: DateTime + diff()

Metode ini paling direkomendasikan karena memahami kalender (leap year, peralihan bulan) serta zona waktu.

<?php
$mulai   = new DateTime('2025-11-01 08:15:00', new DateTimeZone('Asia/Makassar'));
$selesai = new DateTime('2025-11-03 12:45:00', new DateTimeZone('Asia/Makassar'));

$interval = $mulai->diff($selesai);
// Hasil terformat, misal: "2 hari 4 jam 30 menit"
echo $interval->format('%a hari %h jam %i menit');

Penjelasan singkat: DateTime::diff() menghasilkan DateInterval yang dapat kalian format fleksibel %a (total hari), %h (jam), %i (menit), dan seterusnya.

2) Metode Cepat: strtotime() Untuk Detik Total

Cocok ketika kalian hanya butuh selisih dalam detik/menit/jam tanpa pecahan kalender.

<?php
$mulai   = '2025-11-01 08:15:00';
$selesai = '2025-11-03 12:45:00';

$detik = abs(strtotime($selesai) - strtotime($mulai));
$jam   = floor($detik / 3600);
$menit = floor(($detik % 3600) / 60);
$sisa  = $detik % 60;

echo "$jam jam $menit menit $sisa detik";

Tips: pastikan format tanggal konsisten dan berada pada zona waktu yang sama agar hasil stabil.

3) Membuat Output “Ramah Manusia”

Kalian bisa memformat DateInterval agar rapi dan menghindari nol di depan:

<?php
function formatInterval(DateInterval $i): string {
  $bagian = [];
  if ($i->d) $bagian[] = $i->d.' hari';
  if ($i->h) $bagian[] = $i->h.' jam';
  if ($i->i) $bagian[] = $i->i.' menit';
  if ($i->s && empty($bagian)) $bagian[] = $i->s.' detik';
  return implode(' ', $bagian) ?: '0 detik';
}

$mulai = new DateTime('2025-11-01 08:15:00');
$akhir = new DateTime('2025-11-03 12:45:00');
echo formatInterval($mulai->diff($akhir));

Zona Waktu Dan Akurasi

Selalu set zona waktu yang benar dengan date_default_timezone_set('Asia/Makassar') atau objek DateTimeZone. Ini mencegah hasil meleset ketika server berada di zona berbeda. Indonesia tidak memakai DST, tetapi jika aplikasi kalian lintas negara, DateTime akan menangani perubahan tersebut dengan baik.

Ringkas Perbandingan Metode

MetodeKelebihanKeterbatasanContoh Singkat
DateTime + diffAkurat kalender & TZSedikit lebih verbose$a->diff($b)->format()
strtotime (detik)Cepat & sederhanaTidak paham kalenderabs(strtotime(B)-strtotime(A))
Library (opsional)Fitur kaya (humanize)Perlu instalasiCarbon diffForHumans()

Kesimpulan

Untuk kebutuhan produksi, DateTime + diff() adalah pilihan utama karena akurat dan fleksibel. Jika kalian hanya perlu angka kasar dalam detik/jam, strtotime() sudah cukup. Pastikan zona waktu konsisten supaya hasil tidak bias. Sekian artikel dari kodelyly.com, semoga membantu kalian menghitung selisih waktu dengan PHP secara tepat dan elegan!

About the Author

BUKA KOMENTAR (0)
Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.