pwa/time-elapsed

A class to print the elapsed time between two DateTime objects in a nice (and highly modifiable) format

v1.0 2015-01-20 12:21 UTC

This package is not auto-updated.

Last update: 2024-12-21 16:39:41 UTC


README

Scrutinizer Code Quality Code Coverage Build Status

pwa/time-elapsed

A PHP class to print the elapsed time between two DateTime objects in a nice (and highly modifiable) format.

Setup

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.

{
    "require": {
        "pwa/time-elapsed": "dev-master"
    }
}

Because this class uses namespacing, when instantiating the object, you need to use the fully qualified namespace:

$elapsed = new \Pwa\TimeElapsed($start);

Usage

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:

'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:

$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:

$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

License

This software is free software and carries a MIT license.