Doğru Cevap
-
<?php function tarihFark($tarih1,$tarih2,$ayrac) { list($y1,$a1,$g1) = explode($ayrac,$tarih1); list($y2,$a2,$g2) = explode($ayrac,$tarih2); $t1_timestamp = mktime('0','0','0',$a1,$g1,$y1); $t2_timestamp = mktime('0','0','0',$a2,$g2,$y2); if ($t1_timestamp > $t2_timestamp) { $result = ($t1_timestamp - $t2_timestamp) / 86400; } elseif ($t2_timestamp > $t1_timestamp) { $result = ($t2_timestamp - $t1_timestamp) / 86400; } return $result; } $bugun = date('Y-m-d'); $tarih = "2011-09-28"; $gun = tarihFark($tarih,$bugun,'-'); if ($bugun == $tarih ) echo "Üyeliğiniz bugün sona eriyor."; elseif ($bugun > $tarih ) echo "Üyeliğiniz $gun gün önce (şu tarihte) sona ermiştir."; else echo "Üyeliğiniz $gun gün sonra (şu tarihte) sona erecektir."; ?>
Cevaplar
-
öncelikle veri tabanından aldığın zamanı global zaman tipine çevirmen gerek yani 01.01.1970 den o tarihe kadar kaç milisaniye geçmiş se o sayı sonra şimdiki zamanın aynı tipte verisini alıp karşılaştırabilirsin
php manual den mktime ı biraz kurcala çok rahat üstesinden gelirsin
http://php.net/manual/tr/function.mktime.php-
Yunus
merhaba php de çok yeniyim ilk scriptim biraz bu konu hakkında kod olarak yardımcı olabilirmisiniz...12 yıl önce yazılmış
-
-
http://tutorialzine.com/2009/09/making-our-own-twitter-timeline/ adresinde bulabileceğin anlatımda bulunan fonksiyonu kullanabilirsin.
function relativeTime($dt,$precision=2) { $times=array( 365*24*60*60 => "year", 30*24*60*60 => "month", 7*24*60*60 => "week", 24*60*60 => "day", 60*60 => "hour", 60 => "minute", 1 => "second"); $passed=time()-$dt; if($passed<5) { $output='less than 5 seconds ago'; } else { $output=array(); $exit=0; foreach($times as $period=>$name) { if($exit>=$precision || ($exit>0 && $period<60)) break; $result = floor($passed/$period); if($result>0) { $output[]=$result.' '.$name.($result==1?'':'s'); $passed-=$result*$period; $exit++; } else if($exit>0) $exit++; } $output=implode(' and ',$output).' ago'; } return $output; }
-
Yunus
istediğim tam olarak böyle birşey değil, sabit bir tarihi bu gün üzerinden kaç gün geçmiş veya kaç gün var onu hesaplamak istiyorum :S12 yıl önce yazılmış -
xuma
Yukarıdakini örnekten yararlanman için vermiştim buda düzenlenmiş hali.function sureHesapla($zaman,$suan,$ayrinti=2){ $tarihler=array(365*24*60*60 => "yil", 30*24*60*60 => "ay", 7*24*60*60 => "hafta", 24*60*60 => "gun", 60*60 => "saat", 60 => "dakika", 1 => "saniye"); if($suan>$zaman){ $gecen=$suan-$zaman; if($gecen<5){$cikti='5 Saniyeden daha az sure once.';} }else{ $gecen=$zaman-$suan; if($gecen<5){ $cikti='5 Saniyeden daha az sure gecmis.';} } $cikti=array(); $cikis=0; if($gecen>5){ foreach($tarihler as $sayi=>$kelime){ if($cikis>=$ayrinti || ($cikis<0 && $sayi<60)) break; // ara sureyi bulalim $arasure=floor($gecen/$sayi); if($arasure>0){ $cikti[]=$arasure.' '.$kelime; $gecen-=$arasure*$sayi; $cikis++; }else if($cikis>0) $cikis++; } $cikti=implode(' ve ',$cikti).' once'; } return $cikti; } $belirliGun = strtotime('2011-09-20 17:00:43'); $suan=strtotime(date("j-n-Y H:i:s")); echo sureHesapla($belirliGun,$suan,5);
12 yıl önce yazılmış
-
-
Bunu SQL üzerinde bitirmen daha hayırlı.