2017 © Pedro Peláez
 

library dateranger

Object Oriented calendar management

image

obokaman/dateranger

Object Oriented calendar management

  • Monday, April 10, 2017
  • by obokaman
  • Repository
  • 2 Watchers
  • 0 Stars
  • 68 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 12 Versions
  • 0 % Grown

The README.md

DateRanger

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

DateRanger library offer an easy way to create date ranges, allowing to create your own special ranges extending DateRange or reuse the basic ones included in the library itself (Year, Month, Week or Day). This library was inspired by others like Calendr by Yohan Giarelli or Period by The PHP League, (*2)

Installation

DateRanger is available on packagist, so you can easily install with Composer., (*3)

Just run the following command:, (*4)

$ composer require obokaman/dateranger

or include the library in your project's composer.json:, (*5)

    "require": {
        "php": ">=7.2",
        [...]
        "obokaman/dateranger": "^0.1",
        [...]
    },

Example

<?php

include('vendor/autoload.php');

use DateRanger\Period\Year;

$year = new Year();

echo "

{$year->start()->format('Y')}

"; foreach ($year as $month) { echo "
"; echo ""; foreach ($month as $week) { echo ""; foreach ($week as $day) { if (!$day->overlaps($month)) $day_color = '#ddd;'; elseif ($day->isHoliday()) $day_color = 'red;'; else $day_color = '#333'; echo "'; } echo ''; } echo '
{$month->start()->format('F')}
Mon Tue Wed Thu Fri Sat Sun
{$week->start()->format('W')}"; echo $day->start()->format('d') . '
'; }

Basic usage

Library provides several date range objects that extends from DateRange. All these objects share some functionality:, (*6)

  • start() return a DateTimeImmutable object with the start date for the period.
  • end() return a DateTimeImmutable object with the end date for the period.
  • getPeriod(string $interval) returns a DatePeriod object based on the current DateRange, following the given interval in string format (same values accepted by DateInterval constructor).
  • overlaps(DateRange $period) returns a boolean indicating if period overlaps with other DateRange passed as argument.
  • isCurrent() returns a boolean indicating if period is the current one: current year, month, week or day, depending on the class being used.
  • equals(DateRange $period) compares start and end dates between current period and the one passed as argument.

As told above, all date range objects extend from DateRange, wich implements Iterator and Countable, so it's possible to iterate through their "children periods" directly using foreach or know how many of them are contained by using count., (*7)

For instance:, (*8)

$year = Year::fromYear(2014);
echo count($year); // returns 12.
$month = new Month('2014-01-01');
echo count($month) . PHP_EOL; // returns 5 (weeks).

echo $month->start()->format('F') . PHP_EOL; // returns 'January'.
foreach ($month as $week) {
    foreach ($week as $day) {
        if ($month->isOutOfMonth($day)) continue;
        echo $day->start()->format('Y-m-d') . PHP_EOL; // returns 2014-01-01\n [...]
    }
}

Contribute

Comments, feedback and PR are more than welcome!, (*9)

The Versions

10/04 2017

dev-master

9999999-dev https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

10/04 2017

1.1.0

1.1.0.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

04/04 2016

1.0.3

1.0.3.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

30/03 2016

1.0.2

1.0.2.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

21/03 2016

1.0.1

1.0.1.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

18/01 2016

1.0.0

1.0.0.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

27/09 2015

0.1.3

0.1.3.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

27/09 2015

0.1.4

0.1.4.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

26/09 2015

0.1.2

0.1.2.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

26/09 2015

0.1.1

0.1.1.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

26/09 2015

0.0.2

0.0.2.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date

26/09 2015

0.0.1

0.0.1.0 https://github.com/obokaman/dateranger

Object Oriented calendar management

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

calendar events date