• 17-08-2012, 14:13:27
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar

    Facebooktaki yorum tarihleri sistemi gibi bir sistemi nasil yapabilirim? Bir konu ekledikten 1 saat sonra 1 saat önce, 1 gün sonra örnegin 1 gün 3 saat 45 dakika önce eklendi gibi nasil göstertebilirim?

    Veya arastirabilecegim bir sayfa varmi? googlede baktim fakat pek faydalanamadim.
  • 17-08-2012, 14:33:03
    #2
    Üyeliği durduruldu
    <?php

    function ne_zaman($zaman){
    if($zaman=='') return FALSE;
    $zaman = time()-$zaman;
    if($zaman<60) return $zaman.' saniye önce';
    if($zaman<(60*60)) return ondalik_sil($zaman/(60)).' dakika önce';
    if($zaman<(60*60*24)) return ondalik_sil($zaman/(60*60),'.').' saat önce';
    if($zaman<(60*60*60*24)) return ondalik_sil($zaman/(60*60*24),'.').' gün önce';
    if($zaman<(60*60*60*24*7)) return ondalik_sil($zaman/(60*60*60*24),'.').' hafta önce';
    if($zaman>(60*60*60*24*30)) {
    $veri = getdate($zaman);
    $tarih = $veri['mday'].' ';
    $tarih .= ayyaz($veri['mon']);
    return $tarih;
    }
    return FALSE;
    }

    function ayyaz($ayno) {
    switch ($ayno) {
    case 1: return 'Ocak'; break;case 2: return 'Şubat'; break;case 3: return 'Mart'; break;case 4: return 'Nisan'; break;
    case 5: return 'Mayıs'; break;case 6: return 'Haziran'; break;case 7: return 'Temmuz'; break;case 8: return 'Ağustos'; break;
    case 9: return 'Eylül'; break;case 10: return 'Ekim'; break;case 11: return 'Kasım'; break;case 12: return 'Aralık'; break;
    }
    }


    echo ne_zaman(time());

    ?>
  • 17-08-2012, 16:03:54
    #3
    Bunu jQuery veya benzeri betik uygulamalarıyla yapmanız daha hoş olabilir.
  • 18-08-2012, 02:27:31
    #4
    Her ikinizede tesekkür ederim. PHP yöntemini kullandim.
  • 22-10-2012, 16:27:24
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    bafrali55 adlı üyeden alıntı: mesajı görüntüle
    Her ikinizede tesekkür ederim. PHP yöntemini kullandim.
    php yöntemini kullandım,
    teşekkür ederim,,


    demişsin güzel arkadaşım ama ....


    Üstteki php kodamayı kullanmadığına eminim

    Çünki üstteki kodlamada FONKSİYON eksiği bulunuyor, üstteki kodlamada

    return ondalik_sil($zaman/(60)).' dakika önce';
    ondalik_sil isimli bir fonksiyon kullanılıyor, lakin üstte o olması gereken ondalik_sil adlı fonksiyon ortada yok__??

    PEKİ BU DURUMDA NE OLUR ?
    PHP Server büyük bir başarı ve istek ile Call to undefined function, hatası verir.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:27:24 -->-> Daha önceki mesaj 16:10:32 --

    SüleymanYılmaz adlı üyeden alıntı: mesajı görüntüle
    <?php

    function ne_zaman($zaman){
    if($zaman=='') return FALSE;
    $zaman = time()-$zaman;
    if($zaman<60) return $zaman.' saniye önce';
    if($zaman<(60*60)) return ondalik_sil($zaman/(60)).' dakika önce';
    if($zaman<(60*60*24)) return ondalik_sil($zaman/(60*60),'.').' saat önce';
    if($zaman<(60*60*60*24)) return ondalik_sil($zaman/(60*60*24),'.').' gün önce';
    if($zaman<(60*60*60*24*7)) return ondalik_sil($zaman/(60*60*60*24),'.').' hafta önce';
    if($zaman>(60*60*60*24*30)) {
    $veri = getdate($zaman);
    $tarih = $veri['mday'].' ';
    $tarih .= ayyaz($veri['mon']);
    return $tarih;
    }
    return FALSE;
    }

    function ayyaz($ayno) {
    switch ($ayno) {
    case 1: return 'Ocak'; break;case 2: return 'Şubat'; break;case 3: return 'Mart'; break;case 4: return 'Nisan'; break;
    case 5: return 'Mayıs'; break;case 6: return 'Haziran'; break;case 7: return 'Temmuz'; break;case 8: return 'Ağustos'; break;
    case 9: return 'Eylül'; break;case 10: return 'Ekim'; break;case 11: return 'Kasım'; break;case 12: return 'Aralık'; break;
    }
    }


    echo ne_zaman(time());

    ?>

    Eksik özel fonksiyon yerine, php kütüphanesinden fonksiyon ve bir iki küçük değİşiklikle çalışır halini yaptım:


    BUL:
    		
    if($zaman<(60*60)) return ondalik_sil($zaman/(60)).' dakika önce';
    if($zaman<(60*60*24)) return  ondalik_sil($zaman/(60*60),'.').' saat önce';
    if($zaman<(60*60*60*24)) return ondalik_sil($zaman/(60*60*24),'.').' gün önce';
    if($zaman<(60*60*60*24*7)) return ondalik_sil($zaman/(60*60*60*24),'.').' hafta önce';
    DEĞİŞTİR:
    if($zaman<(60*60)) return round($zaman/(60)) . ' dakika önce';
    if($zaman<(60*60*24)) return round($zaman/(60*60)) . ' saat önce';
    if($zaman<(60*60*60*24)) return round($zaman/(60*60*24)).  ' gün önce';
    if($zaman<(60*60*60*24*7)) return round($zaman/(60*60*60*24)) . ' hafta önce';
  • 22-10-2012, 16:46:26
    #6
    en mantıklısı bu şekil üşenmedim yazdım
    ingilizce kısımları değişmek yeterli olur diye düşünüyorum
    <html>
    <head>
    <script>
    var guncellemearaligi=5; //saniye bazinda
    function zamanguncelle()
    {
        zamanlispanlar=document.getElementsByTagName('span');
    	for(i=0;i<zamanlispanlar.length;i++)
    	{
    	if(zamanlispanlar[i].getAttribute('zaman')!==null)
    	{
    	zamanlispanlar[i].innerHTML=timeDifference(parseInt(new Date().getTime() / 1000),zamanlispanlar[i].getAttribute('zaman'));
    	}
    	}
    setTimeout(zamanguncelle, guncellemearaligi*1000);
    }
    function timeDifference(current, previous) {
        
        var msPerMinute = 60;
        var msPerHour = msPerMinute * 60;
        var msPerDay = msPerHour * 24;
        var msPerMonth = msPerDay * 30;
        var msPerYear = msPerDay * 365;
        
        var elapsed = current - previous;
        
        if (elapsed < msPerMinute) {
             return Math.round(elapsed) + ' seconds ago';   
        }
        
        else if (elapsed < msPerHour) {
             return Math.round(elapsed/msPerMinute) + ' minutes ago';   
        }
        
        else if (elapsed < msPerDay ) {
             return Math.round(elapsed/msPerHour ) + ' hours ago';   
        }
    
        else if (elapsed < msPerMonth) {
             return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago';   
        }
        
        else if (elapsed < msPerYear) {
             return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago';   
        }
        
        else {
             return 'approximately ' + Math.round(elapsed/msPerYear ) + ' years ago';   
        }
    }
    </script>
    </head>
    <body>
    <?
    $postzamani = (int)microtime(1) - 2; //2 saniye oncesi
    echo "<span>ne zaman : </span>";
    echo "<span zaman='$postzamani'></span>";
    ?>
    <script>
    zamanguncelle();
    </script>
    </body></html>
  • 26-11-2012, 18:39:16
    #7
    Kusura bakmayin bu konumu atlamisim. Alttaki kodu buldum yabanci bir siteden. Tam istedigim gibi olmadi ama artik idare ediyorum. Tam istedigim istedigim zaman ayini haftasini ve günü göstertebilecegim bir türdü. Örnegin: 2 ay önce eklenmis ise: 2 Ay 3 Hafta 2 Gün önce eklenmistir. seklinde idi.

    function timeago($ptime) {
    	$etime = time() - strtotime($ptime);
    	$a = array(
    		12 * 30 * 24 * 60 * 60 => 'Yil',
    		30 * 24 * 60 * 60 => 'Ay',
    		7 * 24 * 60 * 60 => 'Hatfa',
    		24 * 60 * 60 => 'Gün',
    		60 * 60	=> 'Saat',
    		60 => 'Dakika',
    		1 => 'Saniye'
    	);
    	foreach($a as $secs => $str) {
    		$d = $etime / $secs;
    		if($d >= 1) {
    			$r = round($d);
    			return $r.' '.$str.' önce';
    		}
    	}
    }
    
    echo timeago($sql[date]);