• 13-05-2013, 17:00:28
    #1
    Arkadaşlar iki tarih arasındaki gün farkını hesaplayan bir kod yazdım. Kod sorunsuz çalışıyordu fakat aşağıdaki tarihler arasında hesaplama yaptığımda yanlış sonuç veriyor.

    $tarih1 = strtotime('2013-03-03');
    $tarih2 = strtotime('2013-04-27');

    Mantık olarak kodlar time çevirip aradaki farkı 86400 bölerek gün sayısını buluyordum. Yukardaki tarihlerde istenilen sorunu alamıyorum.

    $gunfarki = ($tarih2-$tarih1)/86400 ; şeklinde işleme soktuğumda aşağıdaki sonuç çıkıyor. Farklı tarih aralıklarında sorun yok. SOrun neyden kaynaklı sizce ?
    54.9583333333
  • 13-05-2013, 17:10:51
    #2
    Üyeliği durduruldu
    REeL13 adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar iki tarih arasındaki gün farkını hesaplayan bir kod yazdım. Kod sorunsuz çalışıyordu fakat aşağıdaki tarihler arasında hesaplama yaptığımda yanlış sonuç veriyor.

    $tarih1 = strtotime('2013-03-03');
    $tarih2 = strtotime('2013-04-27');

    Mantık olarak kodlar time çevirip aradaki farkı 86400 bölerek gün sayısını buluyordum. Yukardaki tarihlerde istenilen sorunu alamıyorum.

    $gunfarki = ($tarih2-$tarih1)/86400 ; şeklinde işleme soktuğumda aşağıdaki sonuç çıkıyor. Farklı tarih aralıklarında sorun yok. SOrun neyden kaynaklı sizce ?
    54.9583333333
    <?php
    
    $tarih1 = strtotime('2013-03-03');
    $tarih2 = strtotime('2013-04-27');
    
    
    $gunfarki = ($tarih2-$tarih1)/86400 ;
    echo round($gunfarki);
    
    ?>
    sıkıntı 24*60*60 olayında bir yerde bence. artık zaman vs. gibi bir şey sayıp süreyi 86400 e tam bölünmeyen bir şey çıkarıyor olabilir.

    Sanırım saat farkından dolayı bir sıkıntı çıkarıyor. Virgülden sonrası hep aynı sayı çünkü ama round ile yuvarlarsan, düzgün görünecektir. Çünkü küsürat hep .9 çıkıyor. yani her türlü yukarı yuvarlaman lazım. ben yaklaşık 10-15 tarih'te denedim, sıkıntı yok
  • 13-05-2013, 18:06:33
    #3
    <?php
    $tarih1 = strtotime("2013-03-03 00:00:00");
    $tarih2 = strtotime("2013-04-27 00:00:00");
    
    echo ($tarih2 - $tarih1) / (60*60*24);
    // Çıktı : 55
    ?>
  • 14-05-2013, 02:28:55
    #4
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    <?php
    $tarih1 = strtotime("2013-03-03 00:00:00");
    $tarih2 = strtotime("2013-04-27 00:00:00");
    
    echo ($tarih2 - $tarih1) / (60*60*24);
    // Çıktı : 55
    ?>
    Hocam saat dakika ve sn alanlarını boş bırakınca orayı sıfır kabul etmiyor mu ?. owl1989 nin dediği gibi round fonksiyonu ile yuvarlama yaptım. Bu da tam çözüm değil mi acaba.
  • 14-05-2013, 02:42:42
    #5
    REeL13 adlı üyeden alıntı: mesajı görüntüle
    Hocam saat dakika ve sn alanlarını boş bırakınca orayı sıfır kabul etmiyor mu ?. owl1989 nin dediği gibi round fonksiyonu ile yuvarlama yaptım. Bu da tam çözüm değil mi acaba.
    Aynıdır aslında, bir farkı yoktur. Hatta normalde yuvarlamaya bile ihtiyaç duymamanız gerekir. İki gün arasındaki farkı net bir şekilde 55 olarak almanız gerekir. Ben sadece alternatif ürettim ve test ettiğimde 55 sonucunu görünce buraya yazmak istedim. Round ile yuvarlama yapmak mantıksız.
  • 14-05-2013, 11:19:49
    #6
    Üyeliği durduruldu
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Aynıdır aslında, bir farkı yoktur. Hatta normalde yuvarlamaya bile ihtiyaç duymamanız gerekir. İki gün arasındaki farkı net bir şekilde 55 olarak almanız gerekir. Ben sadece alternatif ürettim ve test ettiğimde 55 sonucunu görünce buraya yazmak istedim. Round ile yuvarlama yapmak mantıksız.
    İşte kayıp zaman fln alıyor muhtemelen hocam. zaten 1 sn fazla alsa bütün hesap patlar, küsürat çıkar
  • 14-05-2013, 12:20:00
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    DateTime sınıfınız diff() metoduyla en sağlıklı yoldan halledebilirsiniz:
    http://php.net/manual/en/datetime.diff.php
  • 14-05-2013, 17:59:29
    #8
    grafitus adlı üyeden alıntı: mesajı görüntüle
    DateTime sınıfınız diff() metoduyla en sağlıklı yoldan halledebilirsiniz:
    http://php.net/manual/en/datetime.diff.php
    Round yuvarlama ile çözdüm şuan. Oda gün sayısında sapma yapma ihtimali varsa sizin kodu kullanayım o zaman ?
  • 14-05-2013, 18:30:19
    #9
    Evet en sağlıklı ve etkili yol DateTime sınıfı ile çalışmaktır.