Re: [Linux-programlama] PHP Tarih - Tarih = Kalansüre ?

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Serdar Aytekin (serdar-linux@eximinter.com)
Date: Thu 03 Feb 2005 - 15:49:03 EET


> $sa = substr($kayit,12,2); //saat
>$dk = substr($kayit,15,2); //dakika
> $sn = substr($kayit,18,2); //saniye

Onceki mailimde bu kisimda sorun oldugunu acikca ifade ettim ancak gozunuzden kactigini dusunerek
tekrar izah etmeye calisayim. Bu kisimda duzgun parse islemi yapilabilmesi icin gerekli parametreyi
gonderirken hatali gonderiyorsunuz yada bu kismi elinizdeki verinin tipine gore yeniden
duzenlemeniz gerekli. Elinizdeki veri "2005-02-03 22:15:13" seklinde olduguna gore; yukaridaki
yerleri;

$sa = substr($kayit,11,2); //saat
$dk = substr($kayit,12,2); //dakika
$sn = substr($kayit,17,2); //saniye

Seklinde getirip, surebul("2005-02-03 22:15:13") seklinde paremetreyi gecerseniz sonuc alirsiniz.

>bu değişkenlere zaten saat dakika ve saniye değerlerini alabiliyoruz
>explode fonksiyonuda aynı işi yapıcaktır asıl sorun veritabanındaki
>bugün ileri bir saatteki bir değerin karşılaştırılması anında

Bu tur veriler icin explode ile parse etmeniz daha saglikli, kararli sonuclar elde edebilmenizi
saglar, ancak sizin yaptiginiz sekilde de sonuca ulasilabilir. Elinizdeki verinin tipi hep bu
sekilde ise bu cozum ise yarar.

>if ($tarih >= $bugun)
>.........

>kontrol deyiminden sonraki alanların çalışmaması bana mantıksız geliyor
>ya bu karşılaştırmada saat,dakika,saniye değerlerini değerlendirmeye almıyor yada
>12 - 24 saatlik format karışıklığı var gibi geliyor bana.........

Kodu asagidaki hali ile deneyin.

function surebul ($kayit){

 $bugun = time();

 $yil = substr($kayit,0,4); //yıl
 $ay = substr($kayit,5,2); //ay
 $gun = substr($kayit,8,2); //gün
 $sa = substr($kayit,11,2); //saat
 $dk = substr($kayit,12,2); //dakika
 $sn = substr($kayit,17,2); //saniye

$tarih = mktime(date($sa),date($dk),date($sn),date($ay), date($gun), date($yil));

 if ($tarih >= $bugun){

   $tarih = $tarih - $bugun;
   $gun = floor($tarih/86400);
   $tarih -= ($gun*86400);

   $saat = floor($tarih/3600);
   $tarih -= ($saat*3600);
   $dakika = floor($tarih/60);

   $kalan = $gun." gün ".$saat." s ".$dakika." dk";

 }else{

    $kalan = "Süre bitti";
 }
 return $kalan;
}

print surebul("2005-02-03 22:15:13");

--
Saygilarimla,
Serdar Aytekin

_______________________________________________ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.