note 38666 modified in function.cal-days-in-month by didou

From: 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

« previous php.notes (#83019) next »