İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

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

Troypc

0
İyinet Üyesi
Katılım
17 Eylül 2010
Mesajlar
849
Reaction score
7
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.
 

serkantkar

0
İyinet Üyesi
Katılım
17 Temmuz 2012
Mesajlar
977
Reaction score
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;
}
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst