Iki tarih göz önüne alındığında ne PHP hafta içi sayısını bulma en iyi yolu nedir?

4 Cevap php

Başlık hemen kendini açıklayıcı. Iki tarih göz önüne alındığında ne PHP kullanarak hafta gün sayısını bulma en iyi yolu nedir? Hafta içi Pazartesi-Cuma olmak.

Örneğin, nasıl ben 10 haftalık gün 31/08/2008 ve 13/09/2008 arasında olduğunu öğrenmek istiyorsunuz?

4 Cevap

        $datefrom = strtotime($datefrom, 0);
        $dateto = strtotime($dateto, 0);

        $difference = $dateto - $datefrom;

        $days_difference = floor($difference / 86400);
        $weeks_difference = floor($days_difference / 7); // Complete weeks

        $first_day = date("w", $datefrom);
        $days_remainder = floor($days_difference % 7);

        $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
        if ($odd_days > 7) { // Sunday
            $days_remainder--;
        }
        if ($odd_days > 6) { // Saturday
            $days_remainder--;
        }

        $datediff = ($weeks_difference * 5) + $days_remainder;

Burada: http://www.addedbytes.com/php/php-datediff-function/

Eğer bir faturalandırma sistemini oluştururken iseniz, Onu hesaplamak için basit değildir vb banka tatilleri, Paskalya, düşünmek zorunda.

Gördüğüm en iyi çözüm SQL veritabanı (günde satır = yılda 365 satır) gün ve türü ile bir tablo pregenerate ve daha sonra uygun seçimi (fıkra) ile basit bir sayım sorgu yapmaktır.

Tam Joe Celko's Thinking in Sets: Auxiliary, Temporal, and Virtual Tables in SQL anlatıldığı bu çözüm bulabilirsiniz

Tek yönlü sonuçlar çıkararak ve 86400 (24 * 60 * 60) ile div'ing, strtotime (...) kullanarak Unix zaman damgasının için tarih dönüştürmek olacaktır:

$dif_in_seconds = abs(strtotime($a) - strtotime($b));
$daysbetween = $dif_in_seconds / 86400;

ETA: Oh .. Mon-Cuma olduğu gibi hafta içi geliyordu .. ilk başta görmedim ..

En iyi yolu, verilen tarih aralığında tüm tarihler arasında yineleme ve her tarih için haftanın gününü elde etmektir. Bir hafta bir gün, belli bir sayacı artırmak. Sürecin sonunda hafta içi sayısını olsun.

PHP fonksiyonları mktime () ve (UNIX zaman damgası ile çalışmak için) date () burada arkadaş oldular.