Remember if you just want the days in the current month, use the date function:
$days = date("t");(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
cal_days_in_month — Devolver el número de días de un mes para un año y un calendario dados
Esta función devolverá el número de días del mes
month del año year para
el calendario calendar especificado.
calendarEl calendario que se va a usar para el cálculo
monthEl mes del calendario seleccionado
yearEl año del calendario seleccionado
La longitud en días del mes seleccionado en el calendario dado.
Lanza una ValueError si
calendar no es un ID de calendario válido, si
month o year está fuera del
rango admitido, o si la fecha no es válida en el calendario dado.
| Versión | Descripción |
|---|---|
| 8.0.0 |
Ahora lanza una ValueError si
calendar no es un ID de calendario válido o si
la fecha no es válida.
Anteriormente, se emitía un E_WARNING y se
devolvía false.
|
Ejemplo #1 Ejemplo de cal_days_in_month()
<?php
$número = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "Hubo {$número} días en agosto del 2003";
?>Remember if you just want the days in the current month, use the date function:
$days = date("t");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 Bindelfunction lastDayOfMonth(string $time, int $deltaMonth, string $format = 'Y-m-d')
{
try {
$year = date('Y', strtotime($time));
$month = date('m', strtotime($time));
$increaYear = floor(($deltaMonth + $month - 1) / 12);
$year += $increaYear;
$month = (($deltaMonth + $month) % 12) ?: 12;
$day = cal_days_in_month(CAL_GREGORIAN, $month, $year);
return $time . ' + ' . $deltaMonth . ' => ' . date($format, strtotime($year . '-' . $month . '-' . $day)) . "\n";
} catch (Exception $e) {
throw $e;
}
}