• 15-11-2013, 15:15:44
    #1
    R10 Yaşı kavramını yapılsın diye teklif geldi arkadaşlardan onu hayata geçirdik.
    Vbulletin db'ye joindate diye timestamp degerini ekliyor.
    Ekrana basarken biraz daha fonksiyonel olsun istiyorum. Elinde Aşağıdaki örnek gibi yapabilecegimiz kod olan varsa paylaşırsa çok memnun olurum.

    Sadece gün
    Ay + gün
    Yıl + Ay formatında yani:

    R10 Yaşı: 19 Gün
    R10 Yaşı: 2 ay 11 Gün
    R10 Yaşı: 1 yıl 4 Ay
    • EftalBulut
    EftalBulut bunu beğendi.
    1 kişi bunu beğendi.
  • 15-11-2013, 15:41:17
    #2
    Kulağı biraz tersten tuttum gibi geldi ama işe yarıyor

    <?php
    $simdikiZaman = round(microtime(true));
    $kayitZamani = 1360906173;
    function cevirBabam($zaman)
    {
        $sonuc = '';
        // yil 365*24*60*60 31104000
        if($zaman > 31536000)
        {
            $kacYil = round($zaman / 31536000);
            $sonuc .= $kacYil.' Yıl ';
            $zaman -= $kacYil * 31104000;
        }
        
        if($zaman > 2592000)
        {
            // ay 30*24*60*60 2592000
            $kacAy = round($zaman / 2592000);
            $sonuc .= $kacAy.' Ay ';
            $zaman -= $kacAy * 2592000;
        }
        
        if($zaman > 86400 && empty($kacYil))
        {
            // gün 24*60*60 86400
            $kacGun = round($zaman / 86400);
            $sonuc .= $kacGun.' Gün';
            $zaman -= $kacGun * 86400;
        }
        return $sonuc;
    }
    echo cevirBabam($simdikiZaman - $kayitZamani);
    ?>
  • 15-11-2013, 16:20:54
    #3
    $kayitZamani=1331581669

    olmadı
  • 15-11-2013, 16:32:37
    #4
    farkettim bende, round hatalı olmuş orda floor kullandım şimdi dener misin

    <?php
    $simdikiZaman = round(microtime(true));
    $kayitZamani = 1331581669;
    function cevirBabam($zaman)
    {
        $sonuc = '';
        // yil 365*24*60*60 31104000
        if($zaman > 31536000)
        {
            $kacYil = floor($zaman / 31536000);
            $sonuc .= $kacYil.' Yıl ';
            $zaman -= $kacYil * 31536000;
        }
        if($zaman > 2592000)
        {
            // ay 30*24*60*60 2592000
            $kacAy = floor($zaman / 2592000);
            $sonuc .= $kacAy.' Ay ';
            $zaman -= $kacAy * 2592000;
        }
        
        if($zaman > 86400 && empty($kacYil))
        {
            // gün 24*60*60 86400
            $kacGun = floor($zaman / 86400);
            $sonuc .= $kacGun.' Gün';
            $zaman -= $kacGun * 86400;
        }
        return $sonuc;
    }
    echo cevirBabam($simdikiZaman - $kayitZamani);
    ?>
  • 15-11-2013, 16:40:56
    #5
    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(' ',$cikti).' once';
     
            }
             
                 
            return $cikti;
         
        }
        $belirliGun = strtotime('2018-05-26 16:28:44');
        $suan=strtotime(date("j-n-Y H:i:s"));
         
        echo sureHesapla($belirliGun,$suan,5);
    Çıktısı

    4 yil 6 ay 1 hafta 5 gun 23 saat once
  • 15-11-2013, 21:57:43
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Misafir adlı üyeden alıntı: mesajı görüntüle
    R10 Yaşı kavramını yapılsın diye teklif geldi arkadaşlardan onu hayata geçirdik.
    Vbulletin db'ye joindate diye timestamp degerini ekliyor.
    Ekrana basarken biraz daha fonksiyonel olsun istiyorum. Elinde Aşağıdaki örnek gibi yapabilecegimiz kod olan varsa paylaşırsa çok memnun olurum.

    Sadece gün
    Ay + gün
    Yıl + Ay formatında yani:

    R10 Yaşı: 19 Gün
    R10 Yaşı: 2 ay 11 Gün
    R10 Yaşı: 1 yıl 4 Ay
    Diğer arkadaşlar yazmışlar ama, bi fonksiyonda benden olsun:
    //fonksiyon(kayıt tarihi, saniye gösterimi=1, bitiş tarihi);
    function sure_fark( $kayit='', $saniye=0, $simdi=''){
    	$simdi = ($simdi) ? $simdi : time();
    	
    	$fark = $simdi - $kayit;
    	$fark_yy = floor($fark / 31536000);
    	$fark %= 31536000;
    	$fark_mm = floor($fark / 2592000);
    	$fark %= 2592000;
    	$fark_dd = floor($fark / 86400);
    	$fark %= 86400;
    	$fark_hh = floor($fark / 3600);
    	$fark %= 3600;
    	$fark_min = floor($fark / 60);
    	$fark %= 60;
    	$fark_ss = $fark;
    	
    	if($fark_yy > 0){$str = '%d yıl '; $arg[] = $fark_yy;}
    	if($fark_mm > 0){$str .= '%d ay '; $arg[] = $fark_mm;}
    	if($fark_dd > 0){$str .= '%d gün '; $arg[] = $fark_dd;}
    	if($fark_hh > 0){$str .= '%d saat '; $arg[] = $fark_hh;}
    	if($fark_min > 0){$str .= '%d dakika '; $arg[] = $fark_min;}
    	if($fark_ss > 0 && $saniye > 0){$str .= '%d saniye '; $arg[] = $fark_ss;}
    	$str .= ' önce';
    	return vsprintf($str,$arg);
    }
    Örnek kullanımı:

    $kayit = 1331581669;
    echo sure_fark($kayit); //1 yıl 8 ay 8 gün 2 dakika 
    
    echo '<br />';
    $kayit = strtotime('2013-11-14 15:30:44');
    echo sure_fark($kayit); //1 gün 6 saat 19 dakika 
    
    echo '<br />';
    $kayit = strtotime('2013-11-14 15:30:44');
    echo sure_fark($kayit,1); //1 gün 6 saat 19 dakika 57 saniye 
    
    echo '<br /><br />';
    $kayit = strtotime('2013-11-15 15:30:44');
    echo sure_fark($kayit); //6 saat 24 dakika önce
  • 15-11-2013, 23:55:58
    #7
    en basit yöntemde benden olsun

    <?php 
    $suan=time();
    
    $eski=1284551789;
    
    $fark=$suan-$eski;
    $yil=date("y",$fark)-70;
    $ay=date("m",$fark);
    $gun=date("d",$fark);
    $saat=date("H",$fark);
    $dakika=date("i",$fark);
    $saniye=date("s",$fark);
    $yazi="";
    if($yil>0)
    $yazi.=$yil.' Yıl ';
    if($ay>0)
    $yazi.=$ay.' Ay ';
    if($gun>0)
    $yazi.=$gun.' Gün ';
    if($saat>0)
    $yazi.=$saat. ' Saat ';
    
    echo $yazi;
     ?>
  • 16-11-2013, 19:19:18
    #8
    acayip ve psdbul arkadaşların paylaştıkları dışındakiler hepsi hatalı radmin haberin olsun,

    onlar da saniyeye kadar paylaşmış, senin istediğini okumamışlar sanırım.

    neyse sen o kısımları çıkarırsın
  • 16-11-2013, 20:01:30
    #9
    <?php
    $timestamp = "1331581669";
    $gun = ((strtotime(date("d-m-Y"))-strtotime(date("d-m-Y", $timestamp)))/60/60/24)." Gün<br/>";
    echo $gun;
    $ay = floor($gun/30)." Ay ".round($gun%30)." Gün<br/>";
    echo $ay;
    $yil = floor($gun/365)." Yıl ".round(($gun%365)/30)." Ay<br/>";
    echo $yil;
    ?>
    çıktı 1331581669 için
    614 Gün
    20 Ay 14 Gün
    1 Yıl 8 Ay
    şeklinde...

    Şimdi farkettimde istenen bu değilmiş şöyle düzenledim:

    <?php
    $timestamp = "1346630400";
    function r10yasi($timestamp){
    $gun = ((strtotime(date("d-m-Y"))-strtotime(date("d-m-Y", $timestamp)))/60/60/24)." Gün<br/>"; 
    if($gun>30){ 
    if(floor($gun/30)>12){ 
    return floor($gun/365)." Yıl ".round(($gun%365)/30)." Ay<br/>"; 
    }else{
    return floor($gun/30)." Ay ".round($gun%30)." Gün<br/>"; 
    }
    }else{
    return $gun; 
    }
    }
    echo r10yasi($timestamp);
    ?>