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: 28716
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-2021 v.1.5 | design: diviXdesign & rainbowcolors