Wallogit.com
2017 © Pedro Peláez
A class to print the elapsed time between two DateTime objects in a nice (and highly modifiable) format
A PHP class to print the elapsed time between two DateTime objects in a nice (and highly modifiable) format., (*2)
To add this package as a local, per-project dependency to your project, simply add a
dependency on pwa/time-elapsed to your project's composer.json file., (*3)
{
"require": {
"pwa/time-elapsed": "dev-master"
}
}
Because this class uses namespacing, when instantiating the object, you need to use the fully qualified namespace:, (*4)
$elapsed = new \Pwa\TimeElapsed($start);
This class prints the elapsed time, between two DateTime objects, in a formatted way determined by the anonymous functions found in src/localization.php. E.g. this function will be called if elapsed time is >= 1 week and < 1 month:, (*5)
'weeks_ago' => function ($weeks) {
if (floor($weeks) == 1) {
return 'a week ago';
} else {
return floor($weeks) . ' weeks ago';
}
},
You can easily pass your own localization functions to the TimeElapsed class, to override default localization/format:, (*6)
$timezone = new \DateTimeZone("Europe/Stockholm");
$date = new \DateTime('2015-01-01 15:00:00', $timezone);
$elapsed = new TimeElapsed($date);
echo $elapsed->getElapsedTime(); // Between $date and $now = DateTime(null, $timezone);
// Output: a week ago
$localization = '/path/to/my_localization.php';
$elapsed->setLocalization($localization);
echo $elapsed->getElapsedTime();
// Output: one week ago
$localization = '/path/to/my_french_localization.php';
$elapsed->setLocalization($localization);
echo $elapsed->getElapsedTime();
// Output: Il ya 1 semaine
You may also pass an end date when instantianting the object:, (*7)
$start = new \DateTime('2015-01-01 15:00:00', $timezone);
$end = new \DateTime('2015-01-01 15:00:05', $timezone);
$elapsed = new TimeElapsed($start, end);
echo $elapsed->getElapsedTime();
// Output: a few seconds ago
This software is free software and carries a MIT license., (*8)