Loading:


    PHP Różnica czasu między dwiema datami, słownie (difference between two date)

    Skrypt tworzy funkcję pobierającą 2 daty i wyświetlającą różnice czasu w formie:

    np: 7 Lat , 39 Tygodni , 1 Dzien , 9 Godzin , 42 Minuty, 43 Sekundy

    np: 42 Minuty, 43 Sekundy

    Skrypt jest bardzo elastyczny i łątwo go dopasować do swoich potrzeb.


    // Przykład *******************************************************************
    $od = strtotime(date('2001-06-09 14:00:00')); // pobieramy czas w formie zwracanje przez funkcję strtotime
    $do = strtotime(date("Y-m-d G:i:s"));

    echo CalcDiff($do,$od); // wyświetlamy różnice date ;]



    Napisz Artyku³

    Listing


    <?php
    function CalcDiff($currTime, $origTime)
    {
        $showDiff = '';

        // Set times
        $currTime = intval($currTime);
        $origTime = intval($origTime);
        if ($currTime<$origTime) { $diff = $origTime-$currTime; }
        else { $diff = $currTime-$origTime; }

        // Start Years
        $yrs = floor($diff/31556926); // 31556926 secs/yr
        if ($yrs > 0)
        {
            $diff = $diff - ($yrs*31556926);
            $showDiff .= "{$yrs}";
            $showDiff .= $yrs>1 ? ' Lat ' : '';
            $showDiff .= $yrs<2 ? ' Rok ' : '';
        }
        unset($yrs); // End Years

        // Start Months
        $mos = floor($difference/2629743.83); // 2629743.83 secs/mo
        if ($mos > 0)
        {
            $diff = $diff - ($mos*2629743.83);
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$mos}";
            $showDiff .= 1<$mos && $mos<5 ? ' Miesiące ' : '';
            $showDiff .= $mos>4 ? ' Miesięcy ' : '';
            $showDiff .= $mos<1 ? ' Miesiąc ' : '';
        }
        unset($mos); // End Months

        // Start Weeks
        $wks = floor($diff/604800); // 604800 secs/wk
        if ($wks > 0)
        {
            $diff = $diff - ($wks*604800);
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$wks}";
            $showDiff .= 1<$wks && $wks<5 ? ' Tygodnie ' : '';
            $showDiff .= $wks>4 ? ' Tygodni ' : '';
            $showDiff .= $wks<2 ? ' Tydzien ' : '';
        }
        unset($wks); // End Weeks

        // Start Days
        $days = floor($diff/86400); // 86400 secs/day
        if ($days > 0)
        {
            $diff = $diff - ($days*86400);
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$days}";
            $showDiff .= $days>1 ? ' Dni ' : '';
            $showDiff .= $days<2 ? ' Dzien ' : '';
        }
        unset($days); // End Days

        // Start Hours
        $hrs = floor($diff/3600); // 3600 secs/hr
        if ($hrs > 0) {
            $diff = $diff - ($hrs*3600);
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$hrs}";
            $showDiff .= 1<$hrs && $hrs<5 ? ' Godziny ' : '';
            $showDiff .= $hrs<2 ? ' Godzina ' : '';
            $showDiff .= $hrs>4 ? ' Godzin ' : '';
        }
        unset($hrs); // End Hours

        // Start Minutes
        $mins = floor($diff/60); // 60 secs/min
        if ($mins > 0) {
            $diff = $diff - ($mins*60);
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$mins}";
            $showDiff .= 1<$mins && $mins<5 ? ' Minuty ' : '';
            $showDiff .= $mins<2 ? ' Minuta' : '';
            $showDiff .= $mins>4 ? ' Minut' : '';
        }
        unset($mins); // End Minutes

        // Start Seconds
        if ($diff > 0)
        {
            $showDiff .= empty($showDiff) ? '' : ', ';
            $showDiff .= "{$diff}";
            $showDiff .= 1<$diff && $diff<5 ? ' Sekundy ' : '';
            $showDiff .= $diff>4 ? ' Sekund ' : '';
            $showDiff .= $diff<2 ? ' Sekunda ' : '';
                   
        } // End Seconds

        unset($diff); // Free unused memory

        // Zwraca różnice
        if ($currTime<$origTime) { $showDiff = "- {$showDiff}"; }
        return $showDiff;
    }

    // Przykład *******************************************************************
    $od = strtotime(date('2001-06-09 14:00:00')); // pobieramy czas w formie zwracanje przez funkcję strtotime
    $do = strtotime(date("Y-m-d G:i:s"));

    echo CalcDiff($do,$od); // wyświetlamy różnice date ;]



    ?>




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
    Igor dzięki za skrypt Poprawiłem 2 błędy:
    • Zobacz kod dodany do tego wpisu
      • function CalcDiff($currTime, $origTime)
        {
            $showDiff = '';

            // Set times
            $currTime = intval($currTime);
            $origTime = intval($origTime);
            if ($currTime<$origTime) { $diff = $origTime-$currTime; }
            else { $diff = $currTime-$origTime; }

            // Start Years
            $yrs = floor($diff/31556926); // 31556926 secs/yr
            if ($yrs > 0)
            {
                $diff = $diff - ($yrs*31556926);
                $showDiff .= "{$yrs}";
                $showDiff .= $yrs>1 ? ' Lat ' : '';
                $showDiff .= $yrs<2 ? ' Rok ' : '';
            }
            unset($yrs); // End Years

            // Start Months
            $mos = floor($diff/2629743.83); // 2629743.83 secs/mo
            if ($mos > 0)
            {
                $diff = $diff - ($mos*2629743.83);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$mos}";
                $showDiff .= 1<$mos && $mos<5 ? ' Miesiące ' : '';
                $showDiff .= $mos>4 ? ' Miesięcy ' : '';
                $showDiff .= $mos<2 ? ' Miesiąc ' : '';
            }
            unset($mos); // End Months

            // Start Weeks
            $wks = floor($diff/604800); // 604800 secs/wk
            if ($wks > 0)
            {
                $diff = $diff - ($wks*604800);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$wks}";
                $showDiff .= 1<$wks && $wks<5 ? ' Tygodnie ' : '';
                $showDiff .= $wks>4 ? ' Tygodni ' : '';
                $showDiff .= $wks<2 ? ' Tydzien ' : '';
            }
            unset($wks); // End Weeks

            // Start Days
            $days = floor($diff/86400); // 86400 secs/day
            if ($days > 0)
            {
                $diff = $diff - ($days*86400);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$days}";
                $showDiff .= $days>1 ? ' Dni ' : '';
                $showDiff .= $days<2 ? ' Dzien ' : '';
            }
            unset($days); // End Days

            // Start Hours
            $hrs = floor($diff/3600); // 3600 secs/hr
            if ($hrs > 0) {
                $diff = $diff - ($hrs*3600);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$hrs}";
                $showDiff .= 1<$hrs && $hrs<5 ? ' Godziny ' : '';
                $showDiff .= $hrs<2 ? ' Godzina ' : '';
                $showDiff .= $hrs>4 ? ' Godzin ' : '';
            }
            unset($hrs); // End Hours

            // Start Minutes
            $mins = floor($diff/60); // 60 secs/min
            if ($mins > 0) {
                $diff = $diff - ($mins*60);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$mins}";
                $showDiff .= 1<$mins && $mins<5 ? ' Minuty ' : '';
                $showDiff .= $mins<2 ? ' Minuta' : '';
                $showDiff .= $mins>4 ? ' Minut' : '';
            }
            unset($mins); // End Minutes

            // Start Seconds
            if ($diff > 0)
            {
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$diff}";
                $showDiff .= 1<$diff && $diff<5 ? ' Sekundy ' : '';
                $showDiff .= $diff>4 ? ' Sekund ' : '';
                $showDiff .= $diff<2 ? ' Sekunda ' : '';
                       
            } // End Seconds

            unset($diff); // Free unused memory

            // Zwraca różnice
            if ($currTime<$origTime) { $showDiff = "- {$showDiff}"; }
            return $showDiff;
        }
    autor: kocio | 229 | 2009-05-27 15:02:49


    Przerobiłem kod aby wyświetlał tylko np tylko rok lub Miesiąc itd w zależności jaka jest różnica
    • Zobacz kod dodany do tego wpisu
      • <?php
        function CalcDiff($currTime, $origTime)
        {
            $showDiff = '';

            // Set times
            $currTime = intval($currTime);
            $origTime = intval($origTime);
            if ($currTime<$origTime) { $diff = $origTime-$currTime; }
            else { $diff = $currTime-$origTime; }

            // Start Years
            $yrs = floor($diff/31556926); // 31556926 secs/yr
            if ($yrs > 0)
            {
                $diff = $diff - ($yrs*31556926);
                $showDiff .= "{$yrs}";
                $showDiff .= $yrs>1 ? ' Lat ' : '';
                $showDiff .= $yrs<2 ? ' Rok ' : '';
            }
                $lat = $yrs;
            unset($yrs); // End Years

            // Start Months
            $mos = floor($diff/2629743.83); // 2629743.83 secs/mo
            if ($mos > 0)
            {
                $diff = $diff - ($mos*2629743.83);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$mos}";
                $showDiff .= 1<$mos && $mos<5 ? ' Miesiące ' : '';
                $showDiff .= $mos>4 ? ' Miesięcy ' : '';
                $showDiff .= $mos<1 ? ' Miesiąc ' : '';
            }
                $mies = $mos;
            unset($mos); // End Months

            // Start Weeks
            $wks = floor($diff/604800); // 604800 secs/wk
            if ($wks > 0)
            {
                $diff = $diff - ($wks*604800);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$wks}";
                $showDiff .= 1<$wks && $wks<5 ? ' Tygodnie ' : '';
                $showDiff .= $wks>4 ? ' Tygodni ' : '';
                $showDiff .= $wks<2 ? ' Tydzien ' : '';
            }
                $tyg=$wks;
            unset($wks); // End Weeks

            // Start Days
            $days = floor($diff/86400); // 86400 secs/day
            if ($days > 0)
            {
                $diff = $diff - ($days*86400);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$days}";
                $showDiff .= $days>1 ? ' Dni ' : '';
                $showDiff .= $days<2 ? ' Dzien ' : '';
            }
                $dni = $days;
            unset($days); // End Days

            // Start Hours
            $hrs = floor($diff/3600); // 3600 secs/hr
            if ($hrs > 0) {
                $diff = $diff - ($hrs*3600);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$hrs}";
                $showDiff .= 1<$hrs && $hrs<5 ? ' Godziny ' : '';
                $showDiff .= $hrs<2 ? ' Godzina ' : '';
                $showDiff .= $hrs>4 ? ' Godzin ' : '';
            }
                $godz = $hrs;
            unset($hrs); // End Hours

            // Start Minutes
            $mins = floor($diff/60); // 60 secs/min
            if ($mins > 0) {
                $diff = $diff - ($mins*60);
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$mins}";
                $showDiff .= 1<$mins && $mins<5 ? ' Minuty ' : '';
                $showDiff .= $mins<2 ? ' Minuta' : '';
                $showDiff .= $mins>4 ? ' Minut' : '';
            }
                $min = $mins;
            unset($mins); // End Minutes

            // Start Seconds
            if ($diff > 0)
            {
                $showDiff .= empty($showDiff) ? '' : ', ';
                $showDiff .= "{$diff}";
                $showDiff .= 1<$diff && $diff<5 ? ' Sekundy ' : '';
                $showDiff .= $diff>4 ? ' Sekund ' : '';
                $showDiff .= $diff<2 ? ' Sekunda ' : '';
                       
            } // End Seconds

            unset($diff); // Free unused memory
               
               
            // Zwraca różnice
            if ($currTime<$origTime) { $showDiff = "- {$showDiff}"; }
           
                if($lat){
                        if($lat==1)$data = ' Rok';
                        else if($lat>1&&$lat<5)$data = ' Lata';
                        else if($lat>4)$data = ' Lat';
            $bedeZa = $lat.$data;
                }else if($mies){
                        if($mies==1)$data = ' Miesiąc';
                        else if($mies>1&&$mies<5)$data = ' Miesiące';
                        else if($mies>4)$data = ' Miesięcy';
            $bedeZa = $mies.$data;
                }else if($tyg){
                        if($tyg==1)$data = ' Tydzień';
                        else if($tyg>1&&$tyg<5)$data = ' Tygodnie';
                        else if($tyg>4)$data = ' Tygodni';
            $bedeZa = $tyg.$data;
                }else if($dni){
                        if($dni==1)$data = ' Dzień';
                        else if($dni>1&&$dni<5)$data = ' Dni';
                        else if($dni>4)$data = ' Dni';
            $bedeZa = $dni.$data;
                }else if($godz){
                        if($godz==1)$data = ' Godzine';
                        else if($godz>1&&$godz<5)$data = ' Godziny';
                        else if($godz>4&&$godz<22)$data = ' Godzin';
                        else if($godz>21)$data = ' Godziny';
            $bedeZa = $godz.$data;
                }else{
                        if($min==1)$data = ' Minuta';
                        else if($min>1&&$min<5)$datan = ' Minuty';
                        else if($min>4)$data = ' Minut';
            $bedeZa = $min.$data;
                }
               
               
               
               
                return $bedeZa;
        }



        ?>
    autor: Igor | 411 | 2009-08-16 13:18:37


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors