这可能对来这里的人有用.
- /**
- * Format a timestamp to display its age (5 days ago,in 3 days,etc.).
- *
- * @param int $timestamp
- * @param int $now
- * @return string
- */
- function timetostr($timestamp,$now = null) {
- $age = ($now ?: time()) - $timestamp;
- $future = ($age < 0);
- $age = abs($age);
- $age = (int)($age / 60); // minutes ago
- if ($age == 0) return $future ? "momentarily" : "just now";
- $scales = [
- ["minute","minutes",60],["hour","hours",24],["day","days",7],["week","weeks",4.348214286],// average with leap year every 4 years
- ["month","months",12],["year","years",10],["decade","decades",["century","centuries",1000],["millenium","millenia",@R_301_461@_INT_MAX]
- ];
- foreach ($scales as list($singular,$plural,$factor)) {
- if ($age == 0)
- return $future
- ? "in less than 1 $singular"
- : "less than 1 $singular ago";
- if ($age == 1)
- return $future
- ? "in 1 $singular"
- : "1 $singular ago";
- if ($age < $factor)
- return $future
- ? "in $age $plural"
- : "$age $plural ago";
- $age = (int)($age / $factor);
- }
- }