Usage
You can convert a number of seconds into a phrase displaying time distances in the past (how long is it ago) or future (how long will it take).
You can also convert a UNIX timestamp, stored in variable
$timestamp, to a duration phrase.
$duration = time() - $timestamp;
$phraser = new Alg_Time_DurationPhraser( $ranges );
$phrase = $phraser->getPhraseFromSeconds( $duration );
Forget the first line if you already have the duration is seconds.
Random Durations
| seconds | date | converted | phrase |
| 9092250 | 16.04 06:37:30 | 2525:37:30 | Array |
| 4177772 | 18.02 09:29:32 | 1160:29:32 | Array |
| 6880973 | 21.03 16:22:53 | 1911:22:53 | Array |
| 5630796 | 7.03 05:06:36 | 1564:06:36 | Array |
| 13210241 | 2.06 22:30:41 | 3669:30:41 | Array |
| 7675709 | 30.03 21:08:29 | 2132:08:29 | Array |
| 2285882 | 27.01 11:58:02 | 634:58:02 | Array |
| 905234 | 11.01 12:27:14 | 251:27:14 | Array |
| 9934301 | 26.04 00:31:41 | 2759:31:41 | Array |
| 9507661 | 21.04 02:01:01 | 2641:01:01 | Array |
Intitially you need to define ranges before phrasing.
Range phrases can be defined as array...
0,
'to' => 2,
'label' => "1 second",
),
array(
'from' => 2,
'to' => 1 * $min,
'label' => "{s} seconds",
),
array(
'from' => 1 * $min,
'to' => 2 * $min,
'label' => "1 minute",
),
array(
'from' => 2 * $min,
'to' => 15 * $min,
'label' => "{m} minutes",
),
array(
'from' => 15 * $min,
'to' => 30 * $min,
'label' => "a quarter hour",
),
array(
'from' => 30 * $min,
'to' => 45 * $min,
'label' => "half an hour",
),
array(
'from' => 45 * $min,
'to' => 1 * $hour,
'label' => "nearly 1 hour",
),
array(
'from' => 1 * $hour,
'to' => 2 * $hour,
'label' => "1 hour",
),
array(
'from' => 2 * $hour,
'to' => 1 * $day,
'label' => "{h} hours",
),
array(
'from' => 1 * $day,
'to' => 2 * $day,
'label' => "1 day",
),
array(
'from' => 2 * $day,
'to' => 6 * $day,
'label' => "{D} days",
),
array(
'from' => 6 * $day,
'to' => 1 * $week,
'label' => "nearly 1 week",
),
array(
'from' => 1 * $week,
'to' => 2 * $week,
'label' => "1 week",
),
array(
'from' => 2 * $week,
'to' => 3 * $week,
'label' => "{W} weeks",
),
array(
'from' => 3 * $week,
'to' => 1 * $month,
'label' => "nearly 1 month",
),
array(
'from' => 1 * $month,
'to' => 2 * $month,
'label' => "1 month",
),
array(
'from' => 2 * $month,
'to' => 4 * $month,
'label' => "{M} months",
),
array(
'from' => 4 * $month,
'to' => 6 * $month,
'label' => "a quarter year",
),
array(
'from' => 6 * $month,
'to' => 9 * $month,
'label' => "half a year",
),
array(
'from' => 9 * $month,
'to' => 1 * $year,
'label' => "nearly 1 year",
),
array(
'from' => 1 * $year,
'to' => 2 * $year,
'label' => "1 year",
),
array(
'from' => 1 * $year,
'to' => 30 * $year,
'label' => "{Y} years",
),
);
?>
... or imported from a list file...
0|2|1 second
2|60|{s} seconds
60|120|1 minute
120|900|{m} minutes
900|1800|a quarter hour
1800|2700|half an hour
2700|3600|nearly 1 hour
3600|7200|1 hour
7200|86400|{h} hours
86400|172800|1 day
172800|518400|{D} days
518400|604800|nearly 1 week
604800|1209600|1 week
1209600|1814400|{W} weeks
1814400|2629800|nearly 1 month
2629800|5259600|1 month
5259600|10519200|{M} months
10519200|15778800|a quarter year
15778800|23668200|half a year
23668200|31557600|nearly 1 year
31557600|63115200|1 year
31557600|946728000|{Y} years
... using
Alg_Time_DurationPhraseRanges.