# cal_days_in_month

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cal_days_in_monthReturn the number of days in a month for a given year and calendar

### Descrierea

cal_days_in_month ( int `\$calendar` , int `\$month` , int `\$year` ) : int

This function will return the number of days in the `month` of `year` for the specified `calendar`.

### Parametri

`calendar`

Calendar to use for calculation

`month`

Month in the selected calendar

`year`

Year in the selected calendar

### Valorile întoarse

The length in days of the selected month in the given calendar

### Exemple

Example #1 cal_days_in_month() example

``` <?php\$number = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31echo "There were {\$number} days in August 2003";?> ```

### User Contributed Notes 4 notes

117
brian at b5media dot com
11 years ago
``` Remember if you just want the days in the current month, use the date function:\$days = date("t"); ```
27
dbindel at austin dot rr dot com
15 years ago
``` Here's a one-line function I just wrote to find the numbers of days in a month that doesn't depend on any other functions. The reason I made this is because I just found out I forgot to compile PHP with support for calendars, and a class I'm writing for my website's open source section was broken. So rather than recompiling PHP (which I will get around to tomorrow I guess), I just wrote this function which should work just as well, and will always work without the requirement of PHP's calendar extension or any other PHP functions for that matter. I learned the days of the month using the old knuckle & inbetween knuckle method, so that should explain the mod 7 part. :) <?php /* * days_in_month(\$month, \$year) * Returns the number of days in a given month and year, taking into account leap years. * * \$month: numeric month (integers 1-12) * \$year: numeric year (any integer) * * Prec: \$month is an integer between 1 and 12, inclusive, and \$year is an integer. * Post: none */ // corrected by ben at sparkyb dot net function days_in_month(\$month, \$year) { // calculate number of days in a month return \$month == 2 ? (\$year % 4 ? 28 : (\$year % 100 ? 29 : (\$year % 400 ? 28 : 29))) : ((\$month - 1) % 7 % 2 ? 30 : 31); } ?> Enjoy, David Bindel ```
-1
geko45pj at yahoo dot com
11 years ago
``` <?php# PHP Calendar (version 2.3), written by Keith Devensfunction generate_calendar(\$year, \$month, \$days = array(), \$day_name_length = 3, \$month_href = NULL, \$first_day = 0, \$pn = array()){    \$first_of_month = gmmktime(0,0,0,\$month,1,\$year);    #remember that mktime will automatically correct if invalid dates are entered    # for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998    # this provides a built in "rounding" feature to generate_calendar()    \$day_names = array(); #generate all the day names according to the current locale    for(\$n=0,\$t=(3+\$first_day)*86400; \$n<7; \$n++,\$t+=86400) #January 4, 1970 was a Sunday        \$day_names[\$n] = ucfirst(gmstrftime('%A',\$t)); #%A means full textual day name    list(\$month, \$year, \$month_name, \$weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',\$first_of_month));    \$weekday = (\$weekday + 7 - \$first_day) % 7; #adjust for \$first_day    \$title   = htmlentities(ucfirst(\$month_name)).'&nbsp;'.\$year;  #note that some locales don't capitalize month and day names    #Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03    @list(\$p, \$pl) = each(\$pn); @list(\$n, \$nl) = each(\$pn); #previous and next links, if applicable    if(\$p) \$p = '<span class="calendar-prev">'.(\$pl ? '<a href="'.htmlspecialchars(\$pl).'">'.\$p.'</a>' : \$p).'</span>&nbsp;';    if(\$n) \$n = '&nbsp;<span class="calendar-next">'.(\$nl ? '<a href="'.htmlspecialchars(\$nl).'">'.\$n.'</a>' : \$n).'</span>';    \$calendar = '<table class="calendar">'."\n".        '<caption class="calendar-month">'.\$p.(\$month_href ? '<a href="'.htmlspecialchars(\$month_href).'">'.\$title.'</a>' : \$title).\$n."</caption>\n<tr>";    if(\$day_name_length){ #if the day names should be shown (\$day_name_length > 0)        #if day_name_length is >3, the full name of the day will be printed        foreach(\$day_names as \$d)            \$calendar .= '<th abbr="'.htmlentities(\$d).'">'.htmlentities(\$day_name_length < 4 ? substr(\$d,0,\$day_name_length) : \$d).'</th>';        \$calendar .= "</tr>\n<tr>";    }    if(\$weekday > 0) \$calendar .= '<td colspan="'.\$weekday.'">&nbsp;</td>'; #initial 'empty' days    for(\$day=1,\$days_in_month=gmdate('t',\$first_of_month); \$day<=\$days_in_month; \$day++,\$weekday++){        if(\$weekday == 7){            \$weekday   = 0; #start a new week            \$calendar .= "</tr>\n<tr>";        }        if(isset(\$days[\$day]) and is_array(\$days[\$day])){            @list(\$link, \$classes, \$content) = \$days[\$day];            if(is_null(\$content))  \$content  = \$day;            \$calendar .= '<td'.(\$classes ? ' class="'.htmlspecialchars(\$classes).'">' : '>').                (\$link ? '<a href="'.htmlspecialchars(\$link).'">'.\$content.'</a>' : \$content).'</td>';        }        else \$calendar .= "<td>\$day</td>";    }    if(\$weekday != 7) \$calendar .= '<td colspan="'.(7-\$weekday).'">&nbsp;</td>'; #remaining "empty" days    return \$calendar."</tr>\n</table>\n";}echo generate_calendar(2010, 12, 16,3,NULL,0,15, \$first_of_month, \$day_names, \$day_names[\$n]);#echo generate_calendar(\$year, \$month, \$days,\$day_name_length,\$month_href,\$first_day,\$pn);?> ```
jeffbeall at comcast dot net
15 years ago
``` This will work great in future dates but will give the wrong answer for dates before 1550 (approx) when leap year was introduced and the calendar lost a year or two.Sorry now to be more specific it has been a while sine I had to account for those later dates and had to take that into account but just a heads up for others to watch out. ```