README

A PHP polyfill for the calendar extension.
This library provides a pure PHP implementation of all calendar extension functions, allowing you to use calendar functionality without requiring the calendar extension to be installed.
Requirements
Installation
composer require roukmoute/polyfill-calendar
Supported Calendars
| Constant |
Calendar |
CAL_GREGORIAN |
Gregorian Calendar |
CAL_JULIAN |
Julian Calendar |
CAL_JEWISH |
Jewish Calendar |
CAL_FRENCH |
French Republican Calendar |
Available Functions
Calendar Conversion
| Function |
Description |
cal_to_jd |
Converts from a supported calendar to Julian Day Count |
cal_from_jd |
Converts from Julian Day Count to a supported calendar |
cal_days_in_month |
Return the number of days in a month for a given year and calendar |
cal_info |
Returns information about a particular calendar |
Gregorian Calendar
| Function |
Description |
gregoriantojd |
Converts a Gregorian date to Julian Day Count |
jdtogregorian |
Converts Julian Day Count to Gregorian date |
Julian Calendar
| Function |
Description |
juliantojd |
Converts a Julian Calendar date to Julian Day Count |
jdtojulian |
Converts a Julian Day Count to Julian Calendar Date |
Jewish Calendar
| Function |
Description |
jewishtojd |
Converts a date in the Jewish Calendar to Julian Day Count |
jdtojewish |
Converts a Julian Day Count to the Jewish Calendar |
French Republican Calendar
| Function |
Description |
frenchtojd |
Converts a date from the French Republican Calendar to a Julian Day Count |
jdtofrench |
Converts a Julian Day Count to French Republican Calendar Date |
Easter Functions
| Function |
Description |
easter_date |
Get Unix timestamp for midnight on Easter of a given year |
easter_days |
Get number of days after March 21 on which Easter falls for a given year |
Unix Timestamp Conversion
| Function |
Description |
unixtojd |
Convert Unix timestamp to Julian Day |
jdtounix |
Convert Julian Day to Unix timestamp |
Utility Functions
| Function |
Description |
jddayofweek |
Returns the day of the week for a Julian Day |
jdmonthname |
Returns a month name |
Usage Examples
Converting between calendars
// Gregorian to Julian Day Count
$jd = gregoriantojd(12, 25, 2024); // December 25, 2024
// Julian Day Count to Gregorian
$date = jdtogregorian($jd); // "12/25/2024"
// Convert to Jewish calendar
$jewish = jdtojewish($jd); // "10/23/5785"
Getting Easter date
// Get Easter Sunday timestamp for 2025
$easter = easter_date(2025);
echo date('Y-m-d', $easter); // 2025-04-20
// Get days after March 21
$days = easter_days(2025); // 30
Calendar information
// Get info about all calendars
$info = cal_info();
// Get info about a specific calendar
$gregorian = cal_info(CAL_GREGORIAN);
print_r($gregorian['months']); // Array of month names
Days in a month
// February 2024 (leap year)
$days = cal_days_in_month(CAL_GREGORIAN, 2, 2024); // 29
// February 2023 (not a leap year)
$days = cal_days_in_month(CAL_GREGORIAN, 2, 2023); // 28
Available Constants
Calendar Types
CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH, CAL_FRENCH, CAL_NUM_CALS
Day of Week Modes
CAL_DOW_DAYNO, CAL_DOW_SHORT, CAL_DOW_LONG
Month Name Modes
CAL_MONTH_GREGORIAN_SHORT, CAL_MONTH_GREGORIAN_LONG
CAL_MONTH_JULIAN_SHORT, CAL_MONTH_JULIAN_LONG
CAL_MONTH_JEWISH, CAL_MONTH_FRENCH
Easter Calculation Modes
CAL_EASTER_DEFAULT, CAL_EASTER_ROMAN
CAL_EASTER_ALWAYS_GREGORIAN, CAL_EASTER_ALWAYS_JULIAN
Jewish Calendar Formatting
CAL_JEWISH_ADD_ALAFIM_GERESH, CAL_JEWISH_ADD_ALAFIM, CAL_JEWISH_ADD_GERESHAYIM
License
This library is released under the MIT license.