• 04-03-2013, 06:51:02
    #1
    php date fonk ile server zamanına göre ya da belirli bir tarihe göre Dün bugün gibi kavramları nasıl oluştururum.
    yani tarihimiz timestamp formatında 1362214200 olsun(02.03.13 10:50:00)
    şuanki server zamanı ise 04.03.13 06:48:39 olsun saatlerin pek önemi yok.
    1362214200 tarihe karşılık ben 2 Gün önce diye bir tarih kavramı yapmak istiyorum.
    tarihleri sql den cekecem ve tarihler timestamp formatında. umarım derdimi anlatabilmişimdir. Şimdiden teşekkür ederim.
  • 04-03-2013, 10:01:41
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hocam bir gün 24 saat*60 dakika*60 saniye = 86400 saniyedir. Bu bir kenarda dursun.

    Önce timezone ayarlayalım.

    date_default_timezone_set("Turkey");
    Bununla Türkiye için geçerli saat ve tarihi kullanacağımızı belirledik.

    Mesela bugünün tarihini gün-ay-yıl şeklinde alalım.

    $tarih = date("d-m-Y");
    $tarihsaat = date("d-m-Y H:i:s");
    Bu kodları echo ile yazdırırsak şu sonuçları verir. Bu cevabı yazarkenki an için.

    04-03-2013
    04-03-2013 09:51:24
    Örneğin sen iki gün öncesinin bilgisini almak istiyorsun. Bu tarih saatten tam iki gün öncesi.

    $tarih = date("d-m-Y",time()-2*86400);
    $tarihsaat = date("d-m-Y H:i:s",time()-2*86400);
    Bunları yazdırırsak şunlar gelir.

    02-03-2013
    02-03-2013 09:51:24
    Diyelim ki veritabanında timestamp olarak 1362214200 değerini tutuyorsun. Bunun tarih ve tarihsaat olarak karşılığını almak istiyorsun.

    $timestamp = 1362214200;
    
    $tarih = date("d-m-Y,", $timestamp);
    $tarihsaat = date("d-m-Y H:i:s", $timestamp);
    Bu kodları yazdırırsak, 1362214200 timestamp değerine karşılık gelen

    gün-ay-yıl
    gün-ay-yıl saat:dakika:saniye
    verilerine ulaşmış olursun. Yada belki saçma ama sadece o timestamp değerine karşılık gelen saatin dakika değeri lazım sana.

    $dakika = date("i", $timestamp);
    İşte bu kadar. Son olarak diyelim ki 1362214200 timestamp değerinden 2 gün öncesini mi istiyorsun? Neydi 2 gün? 2*86400. Buyur.

    $timestamp = 1362214200-2*86400;
    
    $tarih = date("d-m-Y,", $timestamp);
    $tarihsaat = date("d-m-Y H:i:s", $timestamp);
    2 gün öncenin tarihine gittin. Aynı şekilde 5 gün sonrasının tarihine de şu şekilde ulaşırız. 5 gün eşittir 5*86400. Bu kez timestamp değerinden çıkarmayacağız toplayacağız.

    $timestamp = 1362214200+5*86400;
    
    $tarih = date("d-m-Y,", $timestamp);
    $tarihsaat = date("d-m-Y H:i:s", $timestamp);
  • 04-03-2013, 14:41:10
    #3
    tam olarak istediğim bu değil siz dediğim tam olarak anlamamışsınız sanırım.
    mesela şuan server tarihi 04.03.2013 14:36 diyelim ki benim daha onceden sqlde kayıtlı içerigimin tarihi 02.03.2013 12:00 (saatin çok önemi yok sadece tarih iş görür).
    ben öyle bir değişken tanımlayım ki server saatine göre benim içerigim tarih cıktısı 2 gün önce diye ekrana vursun.
    ya da içerigimin tarihi 25.02.2013 olsun içerik 1 hafta önce eklenmiş gibi bir ibare yapmak istiyorum bunu. "Dün - Yarın - Bugün gibi ibareler koymak istiyorum" bir de mesela içerigin tarihi 07.02.2013 şeklindeyse sql de bunu server tarihi 04.03.2013 iken Perşembe günü diye çıkartmak istiyorum. 2 günden sonrasını gün yazacak vs...şeklinde
  • 04-03-2013, 22:13:49
    #4
    İstediğinize benzer bi iş yapan bi fonksiyon yazmıştım daha önce. Önceki tarihi veriyorsunuz, şu andan itibaren geçen zamanı hesaplıyor. İsteğinize göre şekillendirmeniz mümkün.

    function seker_zaman($unix)
    {
    	$diff = time() - $unix;
    
    	$times = array(
    		array(3600, 60, 'dakika'),
    		array(86400, 3600, 'saat'),
    		array(604800, 86400, 'gün', 'Dün'), // sonuç "1 gün" ise, onun yerine "Dün" yazar
    		array(2592000, 604800, 'hafta', 'Geçen hafta'), // sonuç "1 hafta" ise, onun yerine "Geçen hafta" yazar
    		array(31104000, 2592000, 'ay', 'Geçen ay') // sonuç "1 ay" ise, onun yerine "Geçen ay" yazar
    	);
    
    	if ($diff < 60)
    		return '1 dakikadan kısa bir süre önce';
    
    	foreach ($times as $time) {
    		if ($diff < $time[0])
    			return (isset($time[3]) ? $time[3] : floor($diff / $time[1]) . ' ' . $time[2] . ' önce');
    	}
    
    	return seker_tarih($unix);
    }
    
    function seker_tarih($unix)
    {
    	return strftime('%e %B %Y %A, %H:%I', $unix);
    }
  • 04-03-2013, 23:38:18
    #5
    Cok tesekkur ederim aradigim sey bu uzerinde duzenleme yapip kullanacam
  • 05-03-2013, 00:02:13
    #6
    Bunun yerine jquery timeago eklentisini de kullanabilirsiniz, facebooktaki gibi 1 dakikadan az bir süre önce, 15 dakika önce, 2 hafta önce gibi çıktı veriyor.
  • 05-03-2013, 00:40:19
    #7
    ufukt51 adlı üyeden alıntı: mesajı görüntüle
    tam olarak istediğim bu değil siz dediğim tam olarak anlamamışsınız sanırım.
    mesela şuan server tarihi 04.03.2013 14:36 diyelim ki benim daha onceden sqlde kayıtlı içerigimin tarihi 02.03.2013 12:00 (saatin çok önemi yok sadece tarih iş görür).
    ben öyle bir değişken tanımlayım ki server saatine göre benim içerigim tarih cıktısı 2 gün önce diye ekrana vursun.
    ya da içerigimin tarihi 25.02.2013 olsun içerik 1 hafta önce eklenmiş gibi bir ibare yapmak istiyorum bunu. "Dün - Yarın - Bugün gibi ibareler koymak istiyorum" bir de mesela içerigin tarihi 07.02.2013 şeklindeyse sql de bunu server tarihi 04.03.2013 iken Perşembe günü diye çıkartmak istiyorum. 2 günden sonrasını gün yazacak vs...şeklinde
    Evet ben yanlış anlamışım, kusura bakmayın. Arkadaşın verdiği kodlar yardımcı olur. Ayrıca diğer arkadaşın dediği gibi timeago eklentisi de çok iyi.
  • 05-03-2013, 00:44:44
    #8
    Tesekkurler.timeago eklentisini duymamistim bir arastiraayim