Temat już bardzo stary. Mogę zapodać funkcje które aktualnie używam.
/*
Źródło: <a href="http://forum.php.pl/index.php?showtopic=76721&pid=502507&mode=threaded&start=#entry502507" target="_blank">http://forum.php.pl/index.php?showtopic=76...rt=#entry502507</a>
@ Powprowadzałem poprawki do kodu
SPOSÓB UŻYCIA:
$time = czas zwrócony przez funkcję time()
$wynik = getDiff($time);
*/
/*
* PHP port of Ruby on Rails famous distance_of_time_in_words method.
* See <a href="http://api.rubyonrails.com/classes/ActionView/Helpers/DateHelper.html" target="_blank">http://api.rubyonrails.com/classes/ActionV...DateHelper.html</a> for more details.
*
* Reports the approximate distance in time between two timestamps. Set include_seconds
* to true if you want more detailed approximations.
*
Źródło: <a href="http://pl2.php.net/manual/pl/function.time.php" target="_blank">http://pl2.php.net/manual/pl/function.time.php</a>
*/
function getDiff($from_time, $to_time = 0, $include_seconds = true) {
$distance_in_minutes = round(abs($to_time - $from_time) / 60
); $distance_in_seconds = round(abs($to_time - $from_time));
if ($distance_in_minutes >= 0 and $distance_in_minutes <= 1) {
if (!$include_seconds) {
return ($distance_in_minutes == 0) ? 'mniej niż minutę temu' : 'minutę temu';
} else {
if ($distance_in_seconds >= 0 and $distance_in_seconds <= 4) {
return 'mniej niż 5 sekund temu';
} elseif ($distance_in_seconds >= 5 and $distance_in_seconds <= 9) {
return 'mniej niż 10 sekund temu';
} elseif ($distance_in_seconds >= 10 and $distance_in_seconds <= 19) {
return 'mniej niż 20 sekund temu';
} elseif ($distance_in_seconds >= 20 and $distance_in_seconds <= 39) {
return 'pół minuty temu';
} elseif ($distance_in_seconds >= 40 and $distance_in_seconds <= 59) {
return 'mniej niż minutę temu';
} else {
return 'minutę temu';
}
}
} elseif ($distance_in_minutes >= 2 and $distance_in_minutes <= 44) {
return $distance_in_minutes . ' min temu';
} elseif ($distance_in_minutes >= 45 and $distance_in_minutes <= 89) {
return 'godzinę temu';
} elseif ($distance_in_minutes >= 90 and $distance_in_minutes <= 1439) {
return round(floatval($distance_in_minutes) / 60.0) . ' godzin temu'; } elseif ($distance_in_minutes >= 1440 and $distance_in_minutes <= 2879) {
return 'wczoraj';
} elseif ($distance_in_minutes >= 2880 and $distance_in_minutes <= 43199) {
return round(floatval($distance_in_minutes) / 1440) . ' dni temu'; } elseif ($distance_in_minutes >= 43200 and $distance_in_minutes <= 86399) {
return 'miesiąc temu';
} elseif ($distance_in_minutes >= 86400 and $distance_in_minutes <= 525599) {
return round(floatval($distance_in_minutes) / 43200) . ' miesięcy temu'; } elseif ($distance_in_minutes >= 525600 and $distance_in_minutes <= 1051199) {
return 'rok temu';
} else {
return 'ponad ' . round(floatval($distance_in_minutes) / 525600) . ' lat temu'; }
}
#-------------------------------------------------------------------------------------
// drugi arg okresla czy wyswietlic czysty tekst bez html
function data_rzymska($data, $html=0) {
// wyświetla datę w formie 09 V 1990, 16:00
//przyjmowany format daty 2008-08-31 19:00:02
$godzina = substr($data,11
,2
); $sekundy = substr($data,17
,2
);
switch($miesiac) {
case '01':
$miesiac_rzymski = 'I';
break;
case '02':
$miesiac_rzymski = 'II';
break;
case '03':
$miesiac_rzymski = 'III';
break;
case '04':
$miesiac_rzymski = 'IV';
break;
case '05':
$miesiac_rzymski = 'V';
break;
case '06':
$miesiac_rzymski = 'VI';
break;
case '07':
$miesiac_rzymski = 'VII';
break;
case '08':
$miesiac_rzymski = 'VIII';
break;
case '09':
$miesiac_rzymski = 'IX';
break;
case '10':
$miesiac_rzymski = 'X';
break;
case '11':
$miesiac_rzymski = 'XI';
break;
case '12':
$miesiac_rzymski = 'XII';
break;
default:
$miesiac_rzymski = 'Błędny miesiąc';
}
// jesli wywołamy funkcje bez dodatkowego parametru 1 to bedą sekundy mniejsza czcionka
if($html == 0) {
$sekundy_html = '<span class="small_text">'.$sekundy.'</span>';
} else { // natomiast jesli dodamy arg drugi o wartosci 1 to tekst bedzie czysty bez html'a
$sekundy_html = $sekundy;
}
return $dzien.' '.$miesiac_rzymski.' '.$rok.', '.$godzina.':'.$minuty.':'.$sekundy_html;
}