gamajo / daterange
Display a range of dates, with consolidated time parts.
Requires
- php: ^7.1
Requires (Dev)
- brain/monkey: ^2.2
- dealerdirect/phpcodesniffer-composer-installer: ^0.4.4
- infection/infection: ^0.8
- mockery/mockery: ^1.1
- object-calisthenics/phpcs-calisthenics-rules: ^3
- phpunit/phpunit: ^7
- roave/security-advisories: dev-master
- sirbrillig/phpcs-variable-analysis: ^2.0
- squizlabs/php_codesniffer: ^3.2
- wimg/php-compatibility: ^8.1
This package is auto-updated.
Last update: 2024-10-07 22:11:36 UTC
README
Display a range of dates, with consolidated time parts.
Table Of Contents
Installation
The best way to use this package is through Composer:
composer require gamajo/daterange
Basic Usage
Create an instance of the DateRange
class, with DateTimeImmutable
or DateTime
start and end date-time objects as arguments. Then choose the format to use as the end date output. The start date will only display the time parts that are not duplicated.
$dateRange = new DateRange( new DateTimeImmutable('23rd June 18 14:00'), new DateTimeImmutable('2018-06-23T15:00') ); echo $dateRange->format('H:i d M Y'); // 14:00 – 15:00 23 Jun 2018
If the formatted date would be the same start and end date, only a single date is displayed:
$dateRange = new DateRange( new DateTimeImmutable('23rd June 18 14:00'), new DateTimeImmutable('2018-06-23T15:00') ); echo $dateRange->format('jS M Y'); // 23rd Jun 2018
Advanced Usage
Change Separator
The default separator between the start and end date, is a space, en-dash, space: ' – '
This can be changed via the changeSeparator()
method:
$dateRange = new DateRange( new DateTimeImmutable('23rd June 18 14:00'), new DateTimeImmutable('2018-06-23T15:00') ); $dateRange->changeSeparator(' to '); echo 'From ', $dateRange->format('H:i d M Y'); // From 14:00 to 15:00 23 Jun 2018
Change Removable Delimiters
The consolidation and removal of some time parts may leave delimiters from the format:
$dateRange = new DateRange( new DateTimeImmutable('23rd June 18'), new DateTimeImmutable('2018-06-24') ); echo $dateRange->format('d·M·Y'); // 23·· – 24·Jun·2018
Be default, /
, -
and .
are trimmed from the start date, but this can be amended with the changeRemovableDelimiters()
method:
$dateRange = new DateRange( new DateTimeImmutable('23rd June 18'), new DateTimeImmutable('2018-06-24') ); $dateRange->changeRemovableDelimiters('·'); echo $dateRange->format('d·M·Y'); // 23 – 24·Jun·2018
Known Issues
These are known issues which need addressing before this package can be considered stable:
- Escaped characters are not handled correctly
- Duplicate time parts are not handled correctly
- Hours, minutes and seconds are not handled correctly
Contributing
All feedback, bug reports and pull requests are welcome.
License
Copyright (c) 2018 Gary Jones, Gamajo
This code is licensed under the MIT License.