26 Sep 2013

Menghitung Selisih Dua Datetime dengan PHP

Apakah anda pernah lihat diportal berita, seperti Artikel ini ditulis 50 menit yang lalu. Sekarang kita tidak akan membuat aplikasi port... thumbnail 1 summary

Apakah anda pernah lihat diportal berita, seperti Artikel ini ditulis 50 menit yang lalu. Sekarang kita tidak akan membuat aplikasi portal beritanya, namun kita akan membuat bagaimana menghitung selisih jam antara dua datetime.

Ketiklah 2 function ini pada sebuah file php

function xTimeAgo ($oldTime, $newTime, $timeType) {
        $timeCalc = strtotime($newTime) - strtotime($oldTime);       
        if ($timeType == "x") {
            if ($timeCalc = 60) {
                $timeType = "m";
            }
            if ($timeCalc = (60*60)) {
                $timeType = "h";
            }
            if ($timeCalc = (60*60*24)) {
                $timeType = "d";
            }
        }       
        if ($timeType == "s") {
            $timeCalc .= " seconds ago";
        }
        if ($timeType == "m") {
            $timeCalc = round($timeCalc/60) . " menit yang lalu";
        }       
        if ($timeType == "h") {
            $timeCalc = round($timeCalc/60/60) . " jam yang lalu";
        }
        if ($timeType == "d") {
            $timeCalc = round($timeCalc/60/60/24) . " hari yang lalu";
        }       
        return $timeCalc;
    }
   
function timeAgo($timestamp){
    date_default_timezone_set('Asia/Jakarta');
    $skrg=date("Y-m-d H:i:s");
    $isi= str_replace("-","",xTimeAgo($skrg,$timestamp,"m"));
    $isi2= str_replace("-","",xTimeAgo($skrg,$timestamp,"h"));
    $isi3= str_replace("-","",xTimeAgo($skrg,$timestamp,"d"));
    $go="";
    if($isi > 60)
    {
        $go=$isi2;
    }elseif($isi2 > 24)
    {
        $go=$isi3;
    }elseif($isi < 61)
    {
        $go=$isi;
    }
    return $go;
}

Fungsi dari function tersebut sebagai berikut :

1. xTimeAgo
Berfungsi untuk menghitung diff /selisih 2 datetime dan menjadikannya ke format menit,jam atau hari

2. timeAgo
Berfungsi untuk menimbang hasil xTimeAgo, jika jam menit lebih dari 60 maka dihitung jam, jika jam lebih dari 24 maka dihitung hari

Keterangan : date_default_timezone_set('Asia/Jakarta') adalah men-set timezone waktu Jakarta atau +7
Karena berita yang anda entrykan tersebut bagusnya bukan timezone server hosting/mysql
Untuk melihat lebih detail format timezone silahkan cek di sini

Lalu bagaimana cara menjalankannya ?
Cukup ketikkan :
echo timeAgo('2013-09-26 14:20:00');
Keterangan : Format timezone Mysql adalah Y-m-d H:i:s
 
Jika anda terbantu dengan artikel saya, dimohon klik iklan pada bagian atas/bagian bawah/bagian kanan (Untuk memberikan semangat penulis membuat artikel :D )
(Gunakan Google Accounts anda untuk berkomentar atau akun disqus)
Donasi :
BNI Syariah 0649420235 AN Heru Rahmat Akhnuari
BCA 3120670319 an. Heru Rahmat Akhnuari
BRI 005801112479504 an. Heru Rahmat Akhnuari