Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

PHP Türkçe Zaman ve Tarih Classı - Kendi Yapımım -

Troypc

0
Onaylı Üye
Üye
Katılım
17 Eylül 2010
Mesajlar
849
Açılan Konu
58
Tepki puanı
6
Konum
Ankara
Facebook gibi, az önce yazılan bir yazının yada girdinin "Birkaç dk önce"

yada bir saat önce yazılan bir yazının "bir saat önce" şeklinde görünmesi üzerine küçük bir class yazdım. "Paylaşmak" istedim :)

Class tam olarak ne yapıyor?
"2012.09.07 11:21" gibi bir veriyi işleyerek şuanki zaman göre bu veriyi konumlandırıyırıyor.

3dk öncenin zaman kaydını -> birkaç dk önceı
1 saat önceki zaman kaydını -> bir saat önce
bugün yazılan bir yazı ise -> Bugün, 11:21
girdi dün yazımışsa -> Dün, 11:21
birkaç gün önce yazıldıysa -> 01 Eylül 2012, 11:21

Şeklinde optimize ediyor.

Hemen kodları verelim ve nasıl kullanıldığından bahsedelim.

PHP:
<?php //zamanı bilki oda seni bilsin. :P o ne laa hiçbir anlamı yok
// Troypc'den iyinet'e sevgilerle

	date_default_timezone_set("Europe/Istanbul");
	function zamanla($deger) {

	$yilay = date("Y.m");
	$tarih_dun = date("d") - 1;
	if($tarih_dun=="00"){ 	$ay = date("m");	if($ay == 01 or $ay == 03 or $ay == 05 or $ay == 07 or $ay == 08 or $ay == 10 or $ay == 12){ $tarih_dun="31"; }else{ $tarih_dun="30"; }}
	$tarih_dun = "$yilay.$tarih_dun"; //dün tarihi
	$tarih_bugun = date("Y.m.d"); //bugün tarihi
	$tarih_saatx = date("H") - 1;
	if($tarih_saatx == "-1"){ $tarih_saatx = "23"; }
	$tarih_saat = "$tarih_saatx";
	$tarih_dk = date("i") - 3; //00---03 yapisi
	if($tarih_dk=="-1") { $tarih_dk = "59";} //59---02 yapisi
	if($tarih_dk=="-2") { $tarih_dk = "58";} //58---01 yapisi
	if($tarih_dk=="-3") { $tarih_dk = "57";} //57---00 yapisi
	
	$parca = explode(' ' ,$deger);
	$entry_tarihi = $parca[0]; // 2012.06.26 gibi bir değer
	
	if($entry_tarihi==$tarih_bugun){
	$deger = str_replace("$entry_tarihi", "Bugün,", $deger);
	}
	if($entry_tarihi==$tarih_dun){
	$deger = str_replace("$entry_tarihi", "Dün,", $deger);
	}
	if($entry_tarihi==$tarih_dun OR $entry_tarihi==$tarih_bugun){}else{
	$entry_tarihix = explode('.', $entry_tarihi);
	
			$ing_ay=array('01','02','03','04','05','06','07','08','09','10','11','12');
			$tr_ay=array('Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık');
		$entry_tarihix_ayduzen=str_replace($ing_ay, $tr_ay, $entry_tarihix[1]);

	$entry_tarihix = "$entry_tarihix[2] $entry_tarihix_ayduzen $entry_tarihix[0]"; // 26 Haziran 2012 Yapısı
	
	$deger = str_replace("$entry_tarihi", "$entry_tarihix,", $deger);
	
	}
	
	$entry_saati = $parca[1]; // 03:32:10 gibi bir yapı
	
	$entry_saatix = explode(':',$entry_saati);
	
	if($entry_tarihi==$tarih_bugun){
	
	if($entry_saatix[0] >= $tarih_saat){ $deger="1 saat önce";

	if($entry_saatix[1] >= $tarih_dk){ $deger="Birkaç dakika önce"; }
	
	}
	}
	
	$deger = str_replace("$entry_saati", "$entry_saatix[0]:$entry_saatix[1]", $deger);
	
	
	return $deger; 
	}
	
?>

Dosyayı ekden de indirebilirsiniz.
Ekli dosyayı görüntüle 4450

Kullanımı:
Çok çok çok basit.
Öncelikle elimizde 2012.09.07 11:28 gibi bir veri olması lazım

<?php
include("zaman.php");
//class'ı kullanacağım sayfaya dosyayı include ediyorum.

$zaman_verisi = "2012.09.07 11:28";

$yeni_zaman= zamanla("$zaman_verisi");

//class'da tanımlı zamanla() fonksiyonu ile verimizi şuanki zamanla bağdaştırarak textleştirdik.
?>

Projelerinizde gönül rahatlığıyla kullanabilirsiniz. İşinize yaradıysa çok sevinirim.
 

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
Teşekkürler hocam yararlı bir konu
 

serkantkar

0
Onaylı Üye
Üye
Katılım
17 Temmuz 2012
Mesajlar
977
Açılan Konu
57
Tepki puanı
7
Konum
Sammamish, WA, US
Guzel paylasim. Yararli olur diye ben de kendi yazdigim Twitter turu zaman verisini texte ceviren fonksiyonu vereyim. Bunda yalniz zamani "YYYY-AA-GG ss:dd:ss" seklinde vermelisiniz.

PHP:
function CalculateTweetAge($tweetDate)
{
  $tweetDate = DateTime::createFromFormat('Y-m-d H:i:s', $tweetDate);
  $interval = $tweetDate->diff(new DateTime("now"));

  if ($interval->y > 0)
  {
  	$age = $interval->y ." yýl önce";
  }
  else if ($interval->m > 0)
  {
  	$age = $interval->m ." ay önce";
  }
  else if ($interval->d > 0)
  {
  	$age = $interval->d ." gün önce";
  }
  else if ($interval->h > 0)
  {
  	$age = $interval->h ." saat önce";
  }
  else if ($interval->i > 0)
  {
  	$age = $interval->i ." dakika önce";
  }
  else
  {
  	$age = "þimdi";
  }
  
  return $age;
}
 
Üst