2017 © Pedro Peláez
 

library date-range

Simple date ranges for PHP

image

brtriver/date-range

Simple date ranges for PHP

  • Wednesday, December 30, 2015
  • by brtriver
  • Repository
  • 1 Watchers
  • 5 Stars
  • 18,107 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 2 Open issues
  • 9 Versions
  • 10 % Grown

The README.md

DateRange -- Simple Date Range Object for PHP

Build Status Scrutinizer Code Quality Code Coverage, (*1)

DateRange is a simple representation of date range for PHP., (*2)

Requirements

DateRange works with PHP 5.4.0 or later., (*3)

Install

The recommended way to install date-range is with composer., (*4)

$ composer require brtriver/date-range

Usage

Instance

Pass two date(start and end) args like below:, (*5)

use Brtriver\DateRange\DateRange;
$range = new DateRange('2015-12-01', '2015-12-31');

or Pass array of date :, (*6)

$range = new DateRange(['2015-12-01', '2015-12-31']);

Not only string format but DateTime object is also accepted :, (*7)

$start = new DateTime('2012-12-01');
$end = new DateTime('2012-12-31');
$range = new DateRange([$start, $end]);

Exception

if DateRange cannot accept construct parameters, it throw InvalidArgumentException. So in a short scope, you have to catch the exception., (*8)

try {
  $range = new DateRange('tomorrow', 'today');
} catch (\InvalidArgumentException $e) {
  echo $e->getMessage();
  // end date is the day before than start date
}


access two date

DateRange has 2 date as DateTime object. and you can access with getter methods., (*9)

# if you get start DateTime object.
$start = $range->getStart();

# if you get end DateTime object.
$end = $range->getEnd();

contains

## check contains specific date
var_dump($range->contains('2015-12-10'));
// bool(true)

var_dump($range->contains('2017-01-10'));
// bool(false)

diff

get DateInterval between start and end date to call diff:, (*10)

$range = new DateRange('2015-12-01', '2015-12-03');
$range->diff()->format('%R%a days');
// +2 days

toString

get start and end date string to echo the instance:, (*11)

$range = new DateRange('2015-12-01', '2015-12-03');
echo $range;
// '2015-12-01 ~ 2015-12-03'

If you want to change the format, to call toString method with your format and separator:, (*12)

$range = new DateRange('2015-12-01', '2015-12-03');
echo $range->toString('Y/m/d', '-');
// '2015/12/01 - 2015/12/03'

Period

You can use DateRange in foreach., (*13)

foreach ($range as $d) {
    echo $d->format('Y-m-d') . PHP_EOL;
}

If you use DatePeriod object directly, you can also get DatePeriod object through getDatePeriod like below:, (*14)

foreach ($range->getDatePeriod() as $d) {
    echo $d->format('Y-m-d') . PHP_EOL;
}
// 2015-12-01
// 2015-12-02
// 2015-12-03
// 2015-12-04
// ...
// 2015-12-28
// 2015-12-29
// 2015-12-30
// 2015-12-31

Default interval is set to P1D. If you want to change interval, call setInterval, (*15)

## if you want to change interval, use setInterval()
$start = new DateTime('2012-12-01');
$end = new DateTime('2020-12-31');
$range = new DateRange([$start, $end]);
$range->setInterval(new DateInterval('P1Y')); // change from 'P1D' (Default)
foreach ($range->getDatePeriod() as $d) {
    echo $d->format('Y-m-d') . PHP_EOL;
}
// 2012-12-01
// 2013-12-01
// 2014-12-01
// 2015-12-01
// 2016-12-01
// 2017-12-01
// 2018-12-01
// 2019-12-01
// 2020-12-01

exclude start or end date

If you want to exclude start (end) date in range, call excludeStartDate() or excludeEndDate() like below:, (*16)

// exclude start date
$range = new DateRange('2015-12-01', '2015-12-03');
$range->excludeStartDate();
foreach ($range => $d) {
    echo $d->format('Y-m-d') . PHP_EOL;
}
// 2015-12-02
// 2015-12-03

// exclude end date
$range = new DateRange('2015-12-01', '2015-12-03');
$range->excludeEndDate();
foreach ($range => $d) {
    echo $d->format('Y-m-d') . PHP_EOL;
}
// 2015-12-01
// 2015-12-02

try demo

If you show demo, you have only to run make demo., (*17)

cd ./vendor/brtriver/date-range
make setup
make install
make demo

License

DateRange is licensed under the MIT license., (*18)

The Versions

30/12 2015

dev-master

9999999-dev

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

29/12 2015

v1.1

1.1.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

29/12 2015

v1.0

1.0.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

29/12 2015

v0.6

0.6.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

29/12 2015

v0.5

0.5.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

29/12 2015

v0.4

0.4.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

28/12 2015

v0.3

0.3.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

28/12 2015

v0.2

0.2.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver

27/12 2015

v0.1

0.1.0.0

Simple date ranges for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

by Avatar brtriver