breadthe/php-simple-calendar

Generates a monthly array of dates for displaying in a calendar grid

v1.1.0 2022-04-24 03:33 UTC

This package is auto-updated.

Last update: 2024-05-24 08:34:54 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

This PHP 7.3+ package generates a 7 x 6 (42) or 7 x 5 (35) element array of the days of the month for the desired date. Each date is an instance of Carbon\Carbon.

It automatically pads the beginning/end of the month with dates from the previous/next month. It can optionally pad with null instead.

While it does not include an UI, you may use the generated matrix to build a month-grid calendar in the front-end technology of your choice.

NOTE For now, at least, weeks start with Monday.

Requirements

  • PHP 7.3+

Installation

You can install the package via composer:

composer require breadthe/php-simple-calendar

Usage

Calendar grid generation

use Breadthe\SimpleCalendar\Calendar;

$date = '2020-03-24'; // ISO date

$calendar = new Calendar($date);
$currentMonth = $calendar->grid();

// or use the static constructor
$currentMonth = Calendar::make($date)->grid();

Start of previous/next months

The start (first day) of the previous and next months is a convenience that might come in handy when building the "previous month"/"next month" navigation in a calendar UI. These properties will exist even if padWithNull() is called.

$date = '2020-03-17';
$currentMonth = Calendar::make($date);

$currentMonth->startOfPrevMonth; // get the start of the previous month - instance of Carbon
$currentMonth->startOfPrevMonth->toDateString(); // '2020-02-01'

$currentMonth->startOfNextMonth; // get the start of the previous month - instance of Carbon
$currentMonth->startOfNextMonth->toDateString(); // '2020-04-01'

UI Example

Here's an example of a simple calendar UI that can be built with this package.

Simple calendar UI

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email omigoshdev@protonmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Laravel/PHP Package Boilerplate

This package was generated using the Laravel Package Boilerplate.