Formatter for date and time ranges with i18n support
Ranger is a formatter for date and time ranges, based (somewhat loosely) on Adam Shaw’s formatRange
algorithm in fullCalendar.
<?php
use OpenPsa\Ranger\Ranger;
$ranger = new Ranger('en');
echo $ranger->format('2013-10-05', '2013-10-20');
// Oct 5–20, 2013
echo $ranger->format('2013-10-05', '2013-11-20');
// Oct 5 – Nov 20, 2013
$ranger = new Ranger('en_GB');
echo $ranger->format('2013-10-05', '2013-10-20');
// 5–20 Oct 2013
echo $ranger->format('2013-10-05', '2013-11-20');
// 5 Oct – 20 Nov 2013
$ranger = new Ranger('de');
echo $ranger->format('2013-10-05', '2013-10-20');
// 05.–20.10.2013
echo $ranger->format('2013-10-05', '2013-11-20');
// 05.10.–20.11.2013
To use Ranger in any other locale than "en"
, you will need to have the php-intl
extension installed.
Instantiate ranger with the name of your locale as the parameter. You can also pass null
to use the ini.default_locale
setting. Afterwards, you can call format()
with two date parameters. Accepted types are
DateTime
objectsDateTime
can read)null
(which means current date).<?php
use OpenPsa\Ranger\Ranger;
use IntlDateFormatter;
$ranger = new Ranger('en');
$ranger
->setRangeSeparator(' and ')
->setDateTimeSeparator(', between ')
->setDateType(IntlDateFormatter::LONG)
->setTimeType(IntlDateFormatter::SHORT);
echo $ranger->format('2013-10-05 10:00:01', '2013-10-05 13:30:00');
// October 5, 2013, between 10:00 AM and 1:30 PM