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
php tarih bu şekil nasıl yazdırılıyor
3
●166
- 01-01-2023, 23:10:04
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
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:15Teşekkürler paylaşım içinhares adlı üyeden alıntı: mesajı görüntüle