- Saved searches
- Use saved searches to filter your results more quickly
- License
- lib16/calendar-php
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Event Calendar with PHP
- Why should I use the calendar class?
- Source
- How To Use
- Example Code
- Conclusion
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
A basic PHP 7 class to create calendar data.
License
lib16/calendar-php
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Installation with Composer
This package is available on packagist, so you can use Composer to install it:
composer require lib16/calendar
require_once 'vendor/autoload.php'; use Lib16\Calendar\Calendar; use Lib16\Calendar\DateTime; setlocale(LC_TIME, 'de'); $easter = DateTime::easter(2016); $calendar = Calendar::month(5, 2016) ->setMonthFormat('%b %Y') ->setFirstWeekday('DE') ->addEntry('2016-05-01', 'Tag der Arbeit') ->addEntry($easter->copy()->addDays(39), 'Christi Himmelfahrt') ->addEntry($easter->copy()->addDays(50), 'Pfingstmontag') ->addEntry($easter->copy()->addDays(60), 'Fronleichnam'); print json_encode($calendar->buildArray(), JSON_PRETTY_PRINT);
< "weekdays": < "mon": "Mo", "tue": "Di", "wed": "Mi", "thu": "Do", "fri": "Fr", "sat": "Sa", "sun": "So" >, "years": [ < "time": "2016", "label": "2016", "months": [ < "time": "2016-05", "label": "Mai 2016", "month": "05", "weeks": [ < "time": "2016-W17", "label": "17", "leading": 6, "days": [ < "time": "2016-05-01", "label": "1", "weekday": "sun", "entries": [ < "class": "holiday", "title": "Tag der Arbeit" > ] > ] >, < "time": "2016-W18", "label": "18", "days": [ < "time": "2016-05-02", "label": "2", "weekday": "mon" >, < "time": "2016-05-03", "label": "3", "weekday": "tue" >, < "time": "2016-05-04", "label": "4", "weekday": "wed" >, < "time": "2016-05-05", "label": "5", "weekday": "thu", "entries": [ < "class": "holiday", "title": "Christi Himmelfahrt" > ] >, < "time": "2016-05-06", "label": "6", "weekday": "fri" >, < "time": "2016-05-07", "label": "7", "weekday": "sat" >, < "time": "2016-05-08", …
DateTime extends the standard PHP class with the same name.
Assuming that current date is Thu, 23 Feb 2017 20:59:49 +0100 :
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; const LN = "\n"; print new DateTime(); print LN . new DateTime('2017-02-22'); print LN . new DateTime('first day of next month');
Thu, 23 Feb 2017 20:59:49 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 01 Mar 2017 20:59:49 +0100
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; const LN = "\n"; print DateTime::create(); print LN . DateTime::create(new DateTime()); print LN . DateTime::create(new \DateTime()); print LN; print LN . DateTime::create('2017-02-22'); print LN . DateTime::create('2017-02'); print LN . DateTime::create('22.02.2017'); print LN . DateTime::create('02/22/2017'); print LN . DateTime::create('last day of previous month'); print LN . DateTime::create('first monday of june 2017'); print LN . DateTime::create('now'); print LN; print LN . DateTime::create(22, 2, 2017); print LN . DateTime::create(22, 2); print LN . DateTime::create(22); print LN . DateTime::create(2017, 2, 22); print LN . DateTime::create(2017, 2); print LN . DateTime::create(2017);
Thu, 23 Feb 2017 00:00:00 +0100 Thu, 23 Feb 2017 00:00:00 +0100 Thu, 23 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 01 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Tue, 31 Jan 2017 20:59:49 +0100 Mon, 05 Jun 2017 00:00:00 +0200 Thu, 23 Feb 2017 20:59:49 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Wed, 22 Feb 2017 00:00:00 +0100 Thu, 23 Feb 2017 00:00:00 +0100 Thu, 23 Feb 2017 00:00:00 +0100
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; print DateTime::easter(2017);
Sun, 16 Apr 2017 00:00:00 +0200
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; const LN = "\n"; print LN . DateTime::create('2016-03-29')->addYears(2); print LN . DateTime::create('2016-03-29')->addMonths(-2); print LN . DateTime::create('2016-03-29')->addDays(3); print LN . DateTime::create('2016-04-01')->forceWorkday(); print LN . DateTime::create('2016-04-02')->forceWorkday(); print LN . DateTime::create('2016-04-03')->forceWorkday(); print LN . DateTime::create('2016-04-04')->forceWorkday();
Thu, 29 Mar 2018 00:00:00 +0200 Fri, 29 Jan 2016 00:00:00 +0100 Fri, 01 Apr 2016 00:00:00 +0200 Fri, 01 Apr 2016 00:00:00 +0200 Fri, 01 Apr 2016 00:00:00 +0200 Mon, 04 Apr 2016 00:00:00 +0200 Mon, 04 Apr 2016 00:00:00 +0200
Clone with the copy method
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; $easter = DateTime::easter(2016); $pentecost = $easter->copy()->addDays(49); print $pentecost;
Sun, 15 May 2016 00:00:00 +0200
The formatLocalized method
This method returns a string representation according to locale settings. http://php.net/manual/en/function.strftime.php lists the specifiers you can use in the format string.
require_once 'vendor/autoload.php'; use Lib16\Calendar\DateTime; setlocale(LC_TIME, 'de'); $date = DateTime::create('2016-06-05'); print $date->formatLocalized('%A, %#d. %B %Y');
Event Calendar with PHP
In this article, I have developed an event calendar class that will populate all the days in a month based on the specified date, along with the events that we can add to the calendar.
While PHP doesn’t include a built-in calendar API per se (without including additional extensions), it does, however, give you a broad range of date and time methods that we can use to manipulate. In addition, we can use these methods to populate the pages showing the days, weeks, and months of a particular year.
Why should I use the calendar class?
It’s entirely up to you and your requirements. I have decided to take it upon myself to write my own class as I work on many projects that require an event-based calendar system. I’ve searched countless times for a minimal, dependency-free, and modern library. But couldn’t find one that I could seamlessly integrate with my projects. Therefore, I created a PHP class that can easily be integrated with any project, whether the project’s size is small or large.
Source
Create a new file Calendar.php and add the following code:
active_year = $date != null ? date('Y', strtotime($date)) : date('Y'); $this->active_month = $date != null ? date('m', strtotime($date)) : date('m'); $this->active_day = $date != null ? date('d', strtotime($date)) : date('d'); > public function add_event($txt, $date, $days = 1, $color = '') < $color = $color ? ' ' . $color : $color; $this->events[] = [$txt, $date, $days, $color]; > public function __toString() < $num_days = date('t', strtotime($this->active_day . '-' . $this->active_month . '-' . $this->active_year)); $num_days_last_month = date('j', strtotime('last day of previous month', strtotime($this->active_day . '-' . $this->active_month . '-' . $this->active_year))); $days = [0 => 'Sun', 1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat']; $first_day_of_week = array_search(date('D', strtotime($this->active_year . '-' . $this->active_month . '-1')), $days); $html = 'active_year . '-' . $this->active_month . '-' . $this->active_day)); $html .= ''; $html .= '