<?php
function is_leapyear($year)
{
//计算这一年是不是润年
if(($year%4==0 and $year%100!=0)or ($year%400==0))
{
return 1;
//1代表是润年
}
else
{
return 0;//0代表不是闰年
}
}
function cnt_year_day($year)
{
//计算这一年之前一共过了几天;
$sum=0;
for($i=1;$i<$year;++$i)
{
if(is_leapyear($i))
{
$sum+=366;
}
else
{
$sum+=365;
}
}
return $sum;
}
function get_cal($year)
{
//返回一个数组。得到这一年的月历表
//每个月有几天的数组
$cal_arr=array();
if(is_leapyear($year))
{
$cal_arr=array(31,29,31,30,31,30,31,31,30,31,30,31);
}
else
{
$cal_arr=array(31,28,31,30,31,30,31,31,30,31,30,31);
}
return $cal_arr;
}
function cnt_year_month_day($year,$month)
{
//计算在这一年的这一个月之前。过了几天,加入时2004年,5月,那么就是计算
//2004年的1月1日到4月30.、一共过了几天。
$cal_arr=get_cal($year);
$sum=0;
for($i=1;$i<$month;++$i)
{
$sum=$sum+$cal_arr[$i-1];
}
return $sum;
}
function total_day($year,$month,$day)
{
$sum=0;
$sum=cnt_year_day($year)+cnt_year_month_day($year,$month)+$day;
return $sum;
}
//测试
echo total_day(2010,4,15)%7;
?>