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 ;]
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
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
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno