Skip to content

stevespages/calendar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calendar Class v1.0.0

Demonstration

This shows the result of transforming the PHP array output from the Calendar Class. It is envisaged that the data structure (an array) generated by the Calendar class will be used in conjunction with other code (for example which might add events) and displayed by other code.

M T W T F S S
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Overview

The Calendar PHP class creates an array which, as well as having keys indicating which year and month it is for, includes an array called days which consists of 42, 35 or 28 day arrays. This corresponds to 4, 5 or 6 weeks. The day arrays simply record the day of the month (an integer from 1 to 31) and whether the day is in the current month, the previous month or the next month.

A February which starts on a Monday will only span 28 days or exactly 4 weeks so only 28 days will be represented in the days array. Other months will span 5 or 6 weeks depending on the day of the week they start on. Months which do not start on a Monday will include the last day(s) of the previous month starting from the last Monday. Months which do not end on a Sunday will include the first day(s) of the next month ending on the first Sunday.

In order to use the Calendar class include the Calendar.php file in your project. In any PHP file that you want to use it, run require_once './path/to/Calendar.php';'. Then assign the *Calendar* object to a variable, for example, *$calendar*: $calendar = new Calendar;. Now invoke it with $calendar->createMonth();`.

If no arguments are supplied it will default to the current year and month. With arguments, the code would look like: $calendar->createMonth(2023, 1); for January, 2023. In order to supply one argument but not the other use null as in $calendar->createMonth(null, 3);, for March of the current year.

For convenience the PHP statements are shown below:

require_once './path/to/Calendar.php;
$calendar = new Calendar;
$calendar->createMonth();

Usage

The calendar class could be used just to return months from any year. It could also be used in combination with an events CRUD application. An array representing an event (for example date, time, title, details, organizer etc.) could be added to any day array generated by Calendar based on the fact that the event date and the calendar date are the same. Then the calendar could be displayed with events using PHP or JavaScript etc.

Calendar::createMonth(int $yr, int $mth, obj|false $event): arr

This will return the month plus last days of the previous month and first days of next month, if necessary, in order to make up an exact number of weeks.

If the current year and month are required they can be obtained like this:

  $yr = intval(date('Y'));
  $mth = intval(date('m'));

if you do not want the returned array of days to be populated with events, then the third argument should be false.

The array generated by Calendar

This shows the array created by *Calendar::createMonth();


array(5) {
  ["yr"]=>
  int(2023)
  ["mth"]=>
  int(1)
  ["mth-str"]=>
  string(7) "January"
  ["mth-str-abrev"]=>
  string(3) "Jan"
  ["days"]=>
  array(42) {
    [0]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(26)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [1]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(27)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [2]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(28)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [3]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(29)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [4]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(30)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [5]=>
    array(4) {
      ["yr"]=>
      int(2022)
      ["mth"]=>
      int(12)
      ["day"]=>
      int(31)
      ["prev-curr-nxt"]=>
      string(4) "prev"
    }
    [6]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(1)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [7]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(2)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [8]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(3)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [9]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(4)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [10]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(5)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [11]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(6)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [12]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(7)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [13]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(8)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [14]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(9)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [15]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(10)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [16]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(11)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [17]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(12)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [18]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(13)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [19]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(14)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [20]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(15)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [21]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(16)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [22]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(17)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [23]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(18)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [24]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(19)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [25]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(20)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [26]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(21)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [27]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(22)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [28]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(23)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [29]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(24)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [30]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(25)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [31]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(26)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [32]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(27)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [33]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(28)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [34]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(29)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [35]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(30)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [36]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(1)
      ["day"]=>
      int(31)
      ["prev-curr-nxt"]=>
      string(4) "curr"
    }
    [37]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(2)
      ["day"]=>
      int(1)
      ["prev-curr-nxt"]=>
      string(3) "nxt"
    }
    [38]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(2)
      ["day"]=>
      int(2)
      ["prev-curr-nxt"]=>
      string(3) "nxt"
    }
    [39]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(2)
      ["day"]=>
      int(3)
      ["prev-curr-nxt"]=>
      string(3) "nxt"
    }
    [40]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(2)
      ["day"]=>
      int(4)
      ["prev-curr-nxt"]=>
      string(3) "nxt"
    }
    [41]=>
    array(4) {
      ["yr"]=>
      int(2023)
      ["mth"]=>
      int(2)
      ["day"]=>
      int(5)
      ["prev-curr-nxt"]=>
      string(3) "nxt"
    }
  }
}

Releases

v1.0.0 2022-01-15

First release. Calendar:createMonth() is the only method

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published