downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

cal_from_jd> <Takvim İşlevleri
[edit] Last updated: Fri, 23 Mar 2012

view this page in

cal_days_in_month

(PHP 4 >= 4.1.0, PHP 5)

cal_days_in_monthSeçilen takvime ve yıla göre istenen aydaki gün sayısını geri döndürür

Açıklama

int cal_days_in_month ( int $takvim , int $ay , int $yil )

İşlev seçilen takvim, yil ve ay değiştirgelerine göre gün sayısını geri döndürecektir.

Değiştirgeler

takvim

Hesaplama yapılacak takvim

ay

Seçilen takvimdeki ay

yil

Seçilen takvimdeki yıl

Dönen Değerler

Değiştirge olarak verilen takvimde, seçilen aydaki gün sayısı

Örnekler

Örnek 1 cal_days_in_month() örneği

<?php
$num 
cal_days_in_month(CAL_GREGORIAN82003); // 31
echo "2003 yılı Ağustos ayında $num gün vardır";
?>



cal_from_jd> <Takvim İşlevleri
[edit] Last updated: Fri, 23 Mar 2012
 
add a note add a note User Contributed Notes cal_days_in_month
Anonymous 11-Nov-2011 08:51
You can also use the date() function to get the number of days in a month. You can also pass the 2nd param strtotime() and specify a specific date:

date('t');
adam.pippin at ohmedia.ca 14-Jun-2011 09:06
Forgot to compile the calendar plugin in... Wrote a workaround while I waited for it to compile. It only supports the Gregorian calendar.

<?php
if (!function_exists('cal_days_in_month'))
{
    function
cal_days_in_month($calendar, $month, $year)
    {
        return
date('t', mktime(0, 0, 0, $month, 1, $year));
    }
}
if (!
defined('CAL_GREGORIAN'))
   
define('CAL_GREGORIAN', 1);
?>
deva dot ananth at gmail dot com 09-Mar-2011 10:44
Function  for calculation number of days until birthday:

<?php
function daysLeftForBirthday($devabirthdate)
{
   
/* input birthday date format -> Y-m-d */
   
list($y, $m, $d) = explode('-',$devabirthdate);
   
$nowdate = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
   
$nextbirthday = mktime(0,0,0,$m, $d, date("Y"));

    if (
$nextbirthday<$nowdate)
       
$nextbirthday=$nextbirthday+(60*60*24*365);

   
$daycount=intval(($nextbirthday-$nowdate)/(60*60*24));

    return
$daycount;
}
?>
brian at b5media dot com 04-Dec-2007 09:55
Remember if you just want the days in the current month, use the date function:
$days = date("t");
geko45pj at yahoo dot com 18-Jul-2007 05:28
<?php
# PHP Calendar (version 2.3), written by Keith Devens

function 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);
?>
paul (at) bughunt3r.com 18-Apr-2004 02:31
Here is a nifty function to return the date for easter for ranges beyond 2037 or before 1970.

<?php
   
function str_easter_date ($year) {
       
$days = easter_days ($year);
       
$days_in_march = cal_days_in_month (CAL_GREGORIAN, 3, $year);
        if ((
$days + 21) < $days_in_march) {
           
$month = "March";
           
$date = $days + 21;
        } else {
           
$month = "April";
           
$date = ($days + 21) - $days_in_march;
        }
       
        return
"$month $date, $year";
    }
?>
jeffbeall at comcast dot net 14-Apr-2004 04:04
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.
dbindel at austin dot rr dot com 01-Jan-2004 02:06
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

 
show source | credits | stats | sitemap | contact | advertising | mirror sites