Ich liebe die RelativeTime Funktion von xdebug. Problem ist, dass ich eine gewisse Granularität brauche.
Mit anderen Worten halt nach Sekunden oder Minuten, wenn ich mich entscheide. So, jetzt
echo fTime(strtotime('-23 hours 5 minutes 55 seconds'),0);
zeigen würde,
23 Stunden, 5 Minuten vor
Statt
23 Stunden, 5 Minuten, 55 Sekunden zuvor
Ich wollte auch, dass es im Array nicht niedriger wird, wenn es einen der höheren Zeitbeträge erreicht. Also wenn es Jahre zeigt, möchte ich nur Jahre und Monate zeigen. So, jetzt
echo fTime(strtotime('-1 year 2 months 3 weeks 4 days 16 hours 15 minutes 22 seconds'),0);
1 Jahr zeigen würde, 2 Monate vor
Statt
1 Jahr, 2 Monate, 3 Wochen , 4 Tage, 16 Stunden, 15 Minuten, 22 Sekunden vor
Die folgende Codeänderung tat, was ich brauchte. Requisiten gehen natürlich zuerst zu xdebug. Hoffentlich jemand anderes könnte es nützlich finden:
function fTime($time, $gran=-1) {
$d[0] = array(1,"second");
$d[1] = array(60,"minute");
$d[2] = array(3600,"hour");
$d[3] = array(86400,"day");
$d[4] = array(604800,"week");
$d[5] = array(2592000,"month");
$d[6] = array(31104000,"year");
$w = array();
$return = "";
$now = time();
$diff = ($now-$time);
$secondsLeft = $diff;
$stopat = 0;
for($i=6;$i>$gran;$i--)
{
$w[$i] = intval($secondsLeft/$d[$i][0]);
$secondsLeft -= ($w[$i]*$d[$i][0]);
if($w[$i]!=0)
{
$return.= abs($w[$i]) . " " . $d[$i][1] . (($w[$i]>1)?'s':'') ." ";
switch ($i) {
case 6: // shows years and months
if ($stopat==0) { $stopat=5; }
break;
case 5: // shows months and weeks
if ($stopat==0) { $stopat=4; }
break;
case 4: // shows weeks and days
if ($stopat==0) { $stopat=3; }
break;
case 3: // shows days and hours
if ($stopat==0) { $stopat=2; }
break;
case 2: // shows hours and minutes
if ($stopat==0) { $stopat=1; }
break;
case 1: // shows minutes and seconds if granularity is not set higher
break;
}
if ($i===$stopat) { break 0; }
}
}
$return .= ($diff>0)?"ago":"left";
return $return;
}
Marcus
Vielleicht können Sie helfen: http: // Stackoverflow. com/questions/2643113/convert-2010-04-16-163000-zu-morgen-nachmittag/2643137 –
möglich duplikat von [Wie berechne ich relati Zeit?] (http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time) – hakre