1.
用Globalization包的类,比如:
如果用公历就是
GregorianCalendar gc = new GregorianCalendar();
int year = 2003;
int month = 7;
int days = gc.GetDaysInMonth(year,month);
2.
DateTime.DaysInMonth(yourYear,yourMonth);
3.
每个月的最后一天就是当月的总天数,如7月的最后一天是31,那么这个月就有31天。
而下个月的第一天减去一天就是上个月的最后一天。
$theMonthStart=date('Y-m-d');
$theMonthEnd=date('Y-m-t');
echo date("t",mktime(0,0,0,date('m'),date('d'),date('Y')));
下个月的最后一天
任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天。下面两个例子都会产生字符串 "The last day in Feb 2000 is: 29"。
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>
4.做判断
/*
* 功能: 根据输入的年月日 格式化天
* 输入: $tmpYear ->年
$tmpMon ->月
$tmpDay ->
* 返回: $tmpDay ->格式化后的天
*/
function getDayByMon($tmpYear,$tmpMon,$tmpDay)
{
if (is_numeric($tmpDay) && $tmpDay <= 31)
{
switch ($tmpMon)
{
case 2:
if ($tmpDay >= 29)
if ($this->getLeapYear($tmpYear))
$tmpDay = 29;
else
$tmpDay = 28;
case 4:
case 6:
case 9:
case 11:
if ($tmpDay > 30)
$tmpDay = 30;
}
return $tmpDay;
}
else
return false;
}