Youtube’da ya da kullanıcıların yorumlarının yayınlandığı pek çok yerde görmüşsünüzdür: yorumun yazılış tarihi, 12 Ekim 2009, 12:24 gibi net bir tarih olarak değil de aradan geçen süre bazında (2 gün önce, 5 yıl önce, vb…) gösterilir.
Aşağıdaki bu işi türkçe olarak yapan bir PHP fonksiyonu bulunmakta. PHP’de bulunan strtotime fonksiyonunun kabul ettiği her türlü tarih değerini girdi olarak kullanabilirsiniz. Bu da veritabanınızdan aldığınız tarihi çok büyük ihtimalle direkt olarak kullanabileceğiniz anlamına gelir. Fonksiyonun kullanım şekli, başındaki açıklama satırlarında mevcuttur.
Tarihi türkçe olarak doğrudan ‘12 Ekim 2009′, ‘07-Ağustos-2008, Cumartesi’ gibi şekillerde yazdırmak istiyorsanız PHP ile Türkçe Tarih Gösterimi-Çevrimi başlıklı yazıya gözatmanız daha doğru olur.
/** * verilen tarihler arasında geçen süreyi "1 gün önce", "2 hafta önce" gibi * günlük kullanım'a uygun kolay anlaşılır bir şekle çevirir. Normal kullanımda * o anki tarih baz alınır. * İstenirse ikinci parametre kullanılarak, girilen iki tarih arasındaki * fark alınabilir. * Örnek Kullanım (şu anki tarihi 2009-08-25 13:00:00 olarak kabul edersek): * echo "çıktı: ".cicitarih("2009-08-23 12:05:14"); // çıktı: 2 gün önce * echo "çıktı: ".cicitarih("2009-04-23 10:00:00"); // çıktı: 4 ay önce * echo "çıktı: ".cicitarih("2009-04-23 10:00:00", "2009-05-24 11:00"); * //çıktı: 1 ay önce * @author gudubeth.net * @param str $tarih hesabın yapılacağı tarih. strtotime fonksiyonu * tarafından kulanılabilecek her türlü string değerini * alabilir. * bkz: http://www.php.net/manual/tr/function.strtotime.php * @param str $simdi boş bırakılırsa, o anki saat baz alınır. * formatı $tarih alanında olduğı gibidir. * @return str */ function cicitarih($tarih, $simdi=null){ //aradan geçen süreyi bul if(!$simdi) $simdi=time(); $sure=$simdi-strtotime($tarih); //eğer geçen süre negatif ise boş metin döndür. if($sure<0) return ""; //dönüş metninin oluşturulduğu yer //3600: 60*60, yani 1 saat; //86400: 60*60*24 yani 1 gün demektir. if($sure<60)return round($sure)." saniye önce"; else if($sure<3600) return round($sure/60)." dakika önce"; else if($sure<86400) return round($sure/(3600))." saat önce"; else if($sure<86400*7) return round($sure/(86400))." gün önce"; else if($sure<86400*30) return round($sure/(86400*7))." hafta önce"; else if($sure<86400*365) return round($sure/(86400*30))." ay önce"; else return round($sure/(86400*365))." yıl önce"; }

Yorumlar