note 38666 modified in function.cal-days-in-month by didou
| From: | didou@php.net | Date: | Mon, 10 Jan 2005 01:10:44 +0000 |
| Subject: | note 38666 modified in function.cal-days-in-month by didou | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-83019@lists.php.net to get a copy of this message | ||
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
--was--
Here's a genius one-line function I just wrote to find the numbers of days in a month that
doesn't depend on any other functions.
Since I removed all unnecessary parentheses, this is probably the single most cryptic line of PHP
you will ever encounter.
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
http://php.net/manual/en/function.cal-days-in-month.php