Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

php tarih işleminde atladığım bir yer var ama bulamıyorum

formdan datepicker ile tarih geliyor 20/05/2011 şeklinde

$kaydedilecek_tarih=strtotime($_GET['gelentarih']);
echo $kaydedilecek_tarih;    
 //12131231 gibi bir şeye dönüşüyor istediğim gibi


$orjinale_don=date('d/m/Y',$kaydedilecek_tarih); 
echo $orjinale_don; 
//01/01/1970 yazdırıyor


ben veritabanına 151311313 şeklinde kaydetmek, panelde 20/05/2011 şeklinde göstermek ve mesela 30/12/2019 tarihine kaç gün kaldığını hesaplatabilmek istiyorum.

Şimdiden teşekkür ederim
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • 98oktay adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    12 cevap - 0 soru
    gelen tarih muhtemelen gün ay yıl olarak geliyor ama php bunu ay gün yıl olarak işler o sorunu düzelttim.. kodlar şöyle
    
    $gelentarih="20/05/2011"; // (gün ay yıl)  burayı $_GET ile alabilirsin
    // (ay gün yıl) olarak değiştiriliyor
    $gelentarih=preg_replace('#(\d{2})/(\d{2})/(\d{4})#','$2/$1/$3',$gelentarih);
    $kaydedilecek_tarih=strtotime($gelentarih); 			// time stamp e dönüştürülüyor.
    
    $orjinale_don=date('d/m/Y',$kaydedilecek_tarih);  			// time stamp den stringe dönüştürülüyor.
    echo $orjinale_don; 
    echo '<br />';
    echo 'Doğum günü : '. $dogumgunu="30/12/2019"; // (gün ay yıl)
    // (ay gün yıl) olarak değiştiriliyor
    $dogumgunu=preg_replace('#(\d{2})/(\d{2})/(\d{2}|\d{4})#','$2/$1/$3',$dogumgunu);
    
    echo '<br />';
    // Aradaki Fark Alınıyor.
    $zamanfarki=strtotime($dogumgunu)-strtotime($gelentarih);		// time stamp formatında
    $kalanzaman=date('d/m/Y',$zamanfarki);
    // içinden 01/01/1970 (0 kabul edilen zaman çıkartılmalı)
    preg_match('#(\d{2})/(\d{2})/(\d{4})#',$kalanzaman,$zmnmatches);
    $kgun=$zmnmatches[1]-1;
    $kay =$zmnmatches[2]-1;
    $kyil=$zmnmatches[3]-1970;
    echo '<br />';
    echo "O güne $kyil yıl, $kay ay, $kgun gün kaldı.";
    


    Üstteki Kodların Çıktısı Şöyle:

    20/05/2011
    Doğum günü : 30/12/2019

    O güne 8 yıl, 7 ay, 12 gün kaldı.

Cevaplar

  • sercanaksoy adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    10 cevap - 2 soru
    Date fonksiyonu timestramp turunde veri alir. Bir tarih degeri almaz
  • Mehmet adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    15 cevap - 0 soru
    Önce gelen tarihini parse ederek gün, ay ve yıl şeklinde almalısın.
    Formdan gelen formatının d/m/Y şeklinde olduğunu varsayarsak eğer

    list($gun, $ay, $yil) = explode('/', $_GET['gelentarih']);

    şeklinde birinci adımı uygulamalıyız. Daha sonra almak istediğin timestamp ise şunu yapmalısın.

    $timestamp = mktime(0, 0, 0, $ay, $gun, $yil);


    ve eğer veritabanındaki formatın int ya da timestamp değilse, date ya da datetime ise veritabanı için şuna çevirmelisin.

    $tarih = Date("Y-m-d", $timestamp);


    bu üç işlem işini fazlasıyla çözecektir. mktime fonksiyonunu iyi araştırmanı ayrıca öneriyorum..
    • skrsnsy adlı üyenin fotoğrafı skrsnsy
      katılıyorum
      9 yıl önce yazılmış
  • heatclife adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    5 cevap - 6 soru
    Vermiş olduğunuz cevaplar için çok teşekkür ediyorum. Mehmet bey in vermiş olduğu 3 fonksiyon herşeye yetti, diğeri biraz daha karmaşık geldi ama çalışıyor.