Menghitung Selisih Waktu Dengan PHP Script
Menghitung Selisih Waktu Dengan PHP Script dengan mudah dalam beberapa cara diantaranya menggunakan fungsi date_diff(), strtotime(), dan DateTime objek. Perlu diketahui bersama bahwa pada PHP, terdapat banyak cara untuk menghitung selisih tanggal dan waktu. kali ini kita akan membahas beberapa cara mulai dari yang paling mudah hingga yang cukup rumit. Hal ini dilakukan agar kita dapat memahami dasar atau basic dari fungsi waktu atau tanggal pada PHP. Kemudian dapat mengolah atau memanipulasi lebih lanjut dengan logika aritmatika misalnya. Dan sebelumnya kami juga telah memberikan tutorial pemrograman tentang bagaimana cara membuat script PHP pencarian data berdasarkan periode tanggal.
Tutorial menghitung selisih waktu ini kami lakukan pada sistem operasi Windows 7 menggunakan web server XAMPP ver 5.6. Untuk mengikuti tutorial ini pastikan komputer anda telah terinstall web server XAMPP tersebut. Berikut langkah - langkah atau cara bagaimana Menghitung Selisih Waktu Dengan PHP Script lengkap dengan contoh dan penjelasan nya.
Menghitung Selisih Waktu Dengan PHP Script
1. Menghitung Selisih Waktu Dengan PHP Script Menggunakan Fungsi date_diff()
Cara termudah menghitung selisih waktu dengan PHP adalah menggunakan fungsi date_diff(), fungsi ini mulai ada pada PHP versi 5.3.0. adapun format penulisannya adalah:
date_diff ($datetime1, $datetime2)
Contoh;
<?php $awal = date_create('1988-08-10'); $akhir = date_create(); // waktu sekarang $diff = date_diff( $awal, $akhir ); echo 'Selisih waktu: ' echo $diff->y . ' tahun, '; echo $diff->m . ' bulan, '; echo $diff->d . ' hari, '; echo $diff->h . ' jam, '; echo $diff->i . ' menit, '; echo $diff->s . ' detik, '; // Output: Selisih waktu: 28 tahun, 5 bulan, 9 hari, 13 jam, 7 menit, 7 detik echo 'Total selisih hari : ' . $diff->days; // Output: Total selisih hari: 10398 ?>
Penjelasan;
Argumen, yaitu $datetime1 dan $datetime2 harus berupa objek DateInterval, objek ini dibuat menggunakan fungsi date_create()
Argumen tidak harus urut dari yang kecil, kita dapat membalik urutan dengan menempatkan tanggal besar di argumen pertama dan tanggal kecil di argumen kedua, hasilnya sama saja.
$diff = date_diff( $akhir, $awal );
Hasil dari fungsi date_diff() adalah objek DateInterval, yang memiliki berbagai property yang dapat digunakan untuk mengakses tanggal, misal property d yang bernilai jumlah selisih hari. Pada contoh diatas, untuk melihat semua property jalankan statemen echo print_r($diff)
Format Output
Objek DateInterval dari fungsi date_diff() juga memiliki method format yang dapat digunakan untuk menghasilkan output dengan format tertentu, misalnya:
<?php $diff = date_diff( date_create('1988-08-10'), date_create() ); echo $diff->format('Usia anda adalah %Y tahun %d hari'); // Usia anda adalah 29 tahun 9 hari. ?>
Penjelasan;
Agar karakter diterjemahkan menjadi waktu, maka awali dengan tanda persen (%) pada contoh diatas %Y dan %d
Tahun: Y untuk 4 digit tahun, dan y untuk 2 digit tahun
Bulan: M untuk 2 digit bulan, dan m untuk 1 digit bulan
Tanggal: D untuk 2 digit tanggal, dan d untuk 1 digit tanggal
Hari: a untuk total beda waktu dalam hari. Misal: $diff = date_diff( date_create('1988-08-10'), date_create() );
echo $diff->format('Usia anda adalah %a hari'); // Usia anda adalah 10389 hari
Jam: H untuk 2 digit jam, dan h untuk 1 digit jam
Menit: I untuk 2 digit menit, dan i untuk 1 digit menit
Detik: S untuk 2 digit detik, dan s untuk 1 digit detik
Fungsi untuk menghitung beda waktu
Menghitung Selisih Waktu Dengan PHP Script Setelah kita memahami cara termudah untuk menghitung selisih waktu, maka untuk lebih memudahkan lagi dengan tanpa menulis kode berulang kali, maka kode tersebut dapat kita letakkan dalam sebuah fungsi:
function beda_waktu($date1, $date2, $format = false) { $diff = date_diff( date_create($date1), date_create($date2) ); if ($format) return $diff->format($format); return array('y' => $diff->y, 'm' => $diff->m, 'd' => $diff->d, 'h' => $diff->h, 'i' => $diff->i, 's' => $diff->s ); }
Contoh penggunaan;
echo beda_waktu('1988-08-10', date('Y-m-d'), 'Selisih %y tahun'); // Output: Selisih 28 tahun; $diff = beda_waktu('1988-08-10', date('Y-m-d')); echo 'Selisih: ' . $diff['y'] . ' tahun'; // Output: Selisih 28 tahun
Menghitung Selisih Waktu Dengan PHP Script
2. Menghitung Selisih Waktu Dengan PHP Script Menggunakan Objek DateTime
Jika sebelumnya kita menghitung beda waktu dengan model procedural style, yaitu menggunakan fungsi date_diff(). kali ini kita akan menggunakan model Object Oriented dengan menggunakan objek DateTime. Sama seperti fungsi date_diff(), objek DateTime mulai ada pada PHP versi 5.3.0
Contoh penggunaan;
<?php $awal = new DateTime('1988-08-10'); $akhir = new DateTime(); // Waktu sekarang $diff = $awal->diff($akhir); echo 'Selisih waktu: '; echo $diff->y . ' tahun, '; echo $diff->m . ' bulan, '; echo $diff->d . ' hari, '; echo $diff->h . ' jam, '; echo $diff->i . ' menit, '; echo $diff->s . ' detik, '; // Output: Selisih waktu: 28 tahun, 5 bulan, 9 hari, 13 jam, 7 menit, 7 detik ?>
Jika diperhatikan, cara penggunaan dan output yang dihasilkan mirip dengan model procedural style, ya karena sebenarnya fungsi date_diff() merupakan alias dari DateTime::diff() - objek DateTime dengan method diff() -
Sama seperti date_diff(), objek DateTime juga memiliki method format yang digunakan untuk menghasilkan format tertentu, disamping itu, karakter date yang digunakan juga sama:
<?php $awal = new DateTime('1988-08-10'); $akhir = new DateTime(); // Waktu sekarang $diff = $awal->diff($akhir); echo $diff->format('Usia anda adalah %Y tahun %d hari'); // Usia anda adalah 29 tahun 9 hari. ?>
3. Menghitung Selisih Waktu Dengan PHP Script Menggunakan Fungsi Strtotime
Sebelum php 5.3.0, untuk menghitung selisih tanggal dan waktu pada PHP, kita menggunakan fungsi strtotime(), meskipun terlihat jadul, fungsi ini tetap powerfull. Contoh penggunaannya adalah:
<?php $awal = strtotime('1988-08-10'); $akhir = time(); // Waktu sekarang $diff = $akhir - $awal; echo 'Usia anda adalah ' . floor($diff / (60 * 60 * 24 * 365)) . ' tahun'; echo 'Usia anda adalah ' . floor($diff / (60 * 60 * 24)) . ' hari'; ?>
Pada contoh diatas, fungsi strtotime() akan menghasilkan waktu dalam format timestamp. Timestamp adalah format waktu berupa detik yang dihitung sejak epoch time (1970-01-01 00:00:00), sehingga timestamp 1 berarti 1 detik sejak epoch time.
Karena strtotime berupa detik, maka untuk menghitung selisih waktu, kita juga harus melakukan pembagian dengan detik, pada contoh diatas, untuk menghitung hari, kita gunakan perkalian detik, menit, dan jam (60 x 60 x 24).
Meskipun cara ini lebih ribet dibanding kedua cara sebelumnya, cara ini memiliki beberapa kelebihan, yaitu dapat menghitung selisih berdasarkan jam, menit, detik dengan lebih mudah, contoh:
<?php $awal = strtotime('2017-08-10 10:05:25'); $akhir = strtotime('2017-08-11 11:07:33'); $diff = $akhir - $awal; $jam = floor($diff / (60 * 60)); $menit = $diff - $jam * (60 * 60); echo 'Waktu tinggal: ' . $jam . ' jam, ' . floor( $menit / 60 ) . ' menit'; ?>
Perhitungan diatas akan lebih susah jika menggunakan fungsi date_diff() atau objek DateTime
4. Menghitung Selisih Waktu Dengan PHP Script Menggunakan Timezone
Ketika kita bekerja dengan tanggal, jangan lupa untuk selalu menyesuaikan timezone tau zona waktu. Karena pasti ada selisih ketika kita menghitung waktu sekarang. Hal ini disebabkan secara default php akan menggunakan zona waktu Eropa atau Amerika dengan selisih waktu lebih dari 5 jam.
Untuk mengubah zona waktu dapat menggunakan fungsi date_default_timezone_set(), misal:
<?php $awal = date_create('2017-01-20 01:05:25'); $akhir = date_create(); // waktu sekarang, pukul 06:13 $diff = date_diff( $akhir, $awal ); echo $diff->h; // Hasil: 0 date_default_timezone_set('Asia/Jakarta'); $awal = date_create('2017-01-20 01:05:25'); $akhir = date_create(); // waktu sekarang, pukul 06:13 $diff = date_diff( $akhir, $awal ); echo $diff->h; // Hasil: 5 ?>
Dari contoh diatas terlihat bahwa terdapat selisih waktu antara sebelum dan sesudah pengaturan zona waktu.
Tutorial Menghitung Selisih Waktu Dengan PHP Script
Sekian penjelasan tentang bagaimana cara Menghitung Selisih Waktu Dengan PHP Script lengkap dengan contoh dan penjelasan nya. Untuk mendapatkan source code atau script Anda dapat langsung menyimpan nya dari browser, jika tidak berhasil atau error silahkan hubungi kami melalui SMS atau email atau melalui form komentar dan obrolan. Semoga dapat membantu.
Baca juga :
- Script PHP Pencarian Data Berdasarkan Periode Tanggal
- Script PHP Update Database MySQL | CRUD
- Script Tampil Database dengan PHP MySQL | VIEW Data
- Membuat Form dan Script Edit Data dengan PHP MySQL
Menghitung Selisih Waktu Dengan PHP Script
Tags: menghitung selisih waktu dengan php, menghitung selisih waktu, script php hitung selisih waktu, hitung selisih waktu, menghitung selisih waktu dengan php script