• 01-01-2023, 22:56:15
    #1
    merhaba
    4 hours ago, 2 mins ago, 1 day ago, 1 month ago, 1week ago
    Genelde yorumlarda ve post gönderim zamanlarında gördüğümüz bu şekil tarih fonksiyonunu nasıl yapabiliriz
  • 01-01-2023, 23:10:04
    #2
    function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);
    
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;
    
    $string = array(
    'y' => 'year',
    'm' => 'month',
    'w' => 'week',
    'd' => 'day',
    'h' => 'hour',
    'i' => 'minute',
    's' => 'second',
    );
    foreach ($string as $k => &$v) {
    if ($diff->$k) {
    $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
    } else {
    unset($string[$k]);
    }
    }
    
    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
    }
    echo time_elapsed_string('2013-05-01 00:22:35');
    echo time_elapsed_string('@1367367755'); # timestamp input
    echo time_elapsed_string('2013-05-01 00:22:35', true);
    Çıktısı ise;

    4 months ago
    4 months ago
    4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago olacak. Bununla beraber https://www.php.net/manual/en/datetime.formats.php buraya bakabilirsin

    ayrıca farklı bir örnekte koyalım;

    function time_elapsed_string($ptime)
    {
    $etime = time() - $ptime;
    
    if ($etime < 1)
    {
    return '0 seconds';
    }
    
    $a = array( 365 * 24 * 60 * 60  =>  'year',
    30 * 24 * 60 * 60  =>  'month',
    24 * 60 * 60  =>  'day',
    60 * 60  =>  'hour',
    60  =>  'minute',
    1  =>  'second'
    );
    $a_plural = array( 'year'   => 'years',
    'month'  => 'months',
    'day'    => 'days',
    'hour'   => 'hours',
    'minute' => 'minutes',
    'second' => 'seconds'
    );
    
    foreach ($a as $secs => $str)
    {
    $d = $etime / $secs;
    if ($d >= 1)
    {
    $r = round($d);
    return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago';
    }
    }
    }
  • 01-01-2023, 23:10:10
    #3
    function timeConvert ( $zaman ){
        $zaman =  strtotime($zaman);
        $zaman_farki = time() - $zaman;
        $saniye = $zaman_farki;
        $dakika = round($zaman_farki/60);
        $saat = round($zaman_farki/3600);
        $gun = round($zaman_farki/86400);
        $hafta = round($zaman_farki/604800);
        $ay = round($zaman_farki/2419200);
        $yil = round($zaman_farki/29030400);
        if( $saniye < 60 ){
            if ($saniye == 0){
                return "az önce";
            } else {
                return $saniye .' saniye önce';
            }
        } else if ( $dakika < 60 ){
            return $dakika .' dakika önce';
        } else if ( $saat < 24 ){
            return $saat.' saat önce';
        } else if ( $gun < 7 ){
            return $gun .' gün önce';
        } else if ( $hafta < 4 ){
            return $hafta.' hafta önce';
        } else if ( $ay < 12 ){
            return $ay .' ay önce';
        } else {
            return $yil.' yıl önce';
        }
    }
    
    $tarih = "2021-09-22 15:25:33";
    echo timeConvert($tarih);
    ek olarak aynı işi gören diğer fonksiyon
    // Tarih zaman dilimi ayarlama date_default_timezone_set('Europe/Istanbul');
    // Fonksiyon function time_ago($datetime){ $now = new DateTime; $ago = new DateTime($datetime); $diff = $now->diff($ago); $diff->w = floor($diff->d / 7); $diff->d -= $diff->w * 7; $time_arr = [ 'y' => 'yıl', 'm' => 'ay', 'w' => 'hafta', 'd' => 'gün', 'h' => 'saat', 'i' => 'dakika', 's' => 'saniye' ]; foreach($time_arr as $k => &$v){ if($diff->$k){ $v = $diff->$k . ' ' . $v; }else{ unset($time_arr[$k]); } } return $time_arr ? implode(', ', array_slice($time_arr, 0, 1)) . ' önce' : 'hemen şimdi'; }
     // Örnek Kullanım echo time_ago('2020-06-11 02:13:00');
  • 01-01-2023, 23:12:15
    #4
    hares adlı üyeden alıntı: mesajı görüntüle
    function timeConvert ( $zaman ){
        $zaman =  strtotime($zaman);
        $zaman_farki = time() - $zaman;
        $saniye = $zaman_farki;
        $dakika = round($zaman_farki/60);
        $saat = round($zaman_farki/3600);
        $gun = round($zaman_farki/86400);
        $hafta = round($zaman_farki/604800);
        $ay = round($zaman_farki/2419200);
        $yil = round($zaman_farki/29030400);
        if( $saniye < 60 ){
            if ($saniye == 0){
                return "az önce";
            } else {
                return $saniye .' saniye önce';
            }
        } else if ( $dakika < 60 ){
            return $dakika .' dakika önce';
        } else if ( $saat < 24 ){
            return $saat.' saat önce';
        } else if ( $gun < 7 ){
            return $gun .' gün önce';
        } else if ( $hafta < 4 ){
            return $hafta.' hafta önce';
        } else if ( $ay < 12 ){
            return $ay .' ay önce';
        } else {
            return $yil.' yıl önce';
        }
    }
    
    $tarih = "2021-09-22 15:25:33";
    echo timeConvert($tarih);
    Teşekkürler paylaşım için