Mit einem kleinen PHP-Code Snippet kann man ganz einfach eine gegebene Zeit (in Sekunden) in einen gut lesbaren Text umwandeln. Dabei wird die Zeit in Wochen, Tagen, Stunden, Minuten und Sekunden (Singular/Plural ist berücksichtigt) ausgegeben. Hier dieser Snippet:
/*****************************************************************************************
/* Berechnet aus dem Wert $theTime einen String:
/* MakeTimeDiffString( 604800 * 2 + 86400 * 3 + 60 + 5 ) ergibt:
/* in 2 Wochen, 3 Tagen, 1 Minute und 5 Sekunden
/* bei 0 jetzt
/* positiver Wert: in...
/* negativer Wert: vor...
/*
/****************************************************************************************/
function MakeTimeDiffString( $theTime ) {
$week = 604800;
$day = 86400;
$hour = 3600;
$minute = 60;
$add = false;
$timeText = "";
if ( $theTime == 0 ) return( "jetzt" );
if ( $theTime < 0 ) { $timeText = "vor "; $theTime = $theTime *- 1; }
else $timeText = "in ";
if ( $theTime >= $week ) {
$timeText .= intdiv( $theTime, $week )." ".( intdiv( $theTime, $week ) > 1 ? "Wochen" : "Woche");
$theTime -= $week * intdiv( $theTime, $week );
$add = true;
} else $add = false;
if ( $theTime >= $day ) {
$timeText .= ($add === true ? ( $theTime - $day * intdiv( $theTime, $day ) > 0 ? ", " : " und " ) : "").intdiv( $theTime, $day )." ".( intdiv( $theTime, $day ) > 1 ? "Tagen" : "Tag");
$theTime -= $day * intdiv( $theTime, $day );
$add = true;
}
if ( $theTime >= $hour ) {
$timeText .= ( $add === true ? ( $theTime - $hour * intdiv( $theTime, $hour ) > 0 ? ", " : " und " ).intdiv( $theTime, $hour )." ".( intdiv( $theTime, $hour ) > 1 ? "Stunden" : "Stunde") : intdiv( $theTime, $hour )." ".( intdiv( $theTime, $hour ) > 1 ? "Stunden" : "Stunde") );
$theTime -= $hour * intdiv( $theTime, $hour );
$add = true;
}
if ( $theTime >= $minute ) {
$timeText .= ( $add === true ? ( $theTime - $minute * intdiv( $theTime, $minute ) > 0 ? ", " : " und " ).intdiv( $theTime, $minute )." ".( intdiv( $theTime, $minute ) > 1 ? "Minuten" : "Minute") : intdiv( $theTime, $minute )." ".( intdiv( $theTime, $minute ) > 1 ? "Minuten" : "Minute") );
$theTime -= $minute * intdiv( $theTime, $minute );
$add = true;
}
if ( $theTime >= 1 )
$timeText .= ($add === true ? " und " : "" ).$theTime.( intdiv( $theTime, 1 ) > 1 ? " Sekunden" : " Sekunde");
return( $timeText );
}
So ergibt sich aus:
MakeTimeDiffString( 0 ) „jetzt“
MakeTimeDiffString( -1 ) „vor 1 Sekunde“
MakeTimeDiffString( 604800*2+86400*3+60+1 ) „in 2 Wochen, 3 Tagen, 1 Minute und 1 Sekunde“
MakeTimeDiffString( -( 604800+125 ) ) „vor 1 Woche, 2 Minuten und 5 Sekunden“
MakeTimeDiffString( 604800+86400*2+7200+120+1 ) „in 1 Woche, 2 Tagen, 2 Stunden, 2 Minuten und 1 Sekunde“
und aus
'Der Beginn der Unix-Epoche (Januar 1 1970 00:00:00 GMT) ist '.MakeTimeDiffString( 0 - time() ).' gewesen'
„Der Beginn der Unix-Epoche (Januar 1 1970 00:00:00 GMT) ist vor 2828 Wochen, 14 Stunden, 40 Minuten und 38 Sekunden gewesen.“
Viel Spaß damit