2000 年 1 月 1 日から指定日までの日数を計算する関数です
(始まりと終わりもカウントされます) 日付の形式は、YYYY-MM-DD
です。
php
// 2000 年 1 月 1 日から特定の日までの日数を計算します
function cal_start2end($end_day,$start_day)
{
$start_day=ereg_replace("-","" ,$start_day);
$end_day=ereg_replace("-","",$end_day);
if($end_day>=$start_day)
{ // 終了日が開始日より大きい場合
(substr($ end_day、0,4)== substr($ start_day、0,4))
else
{
// 同じ月ではありません
switch (substr($end_day,4,2))
{
ケース "01":
$endday_from_newyear=substr($end_day,6,2)+1;
休憩;
ケース "02":
$endday_from_newyear=substr($end_day,6,2)+31;
休憩;
ケース "03":
$endday_from_newyear=substr($end_day,6,2)+$leap_day+31;
休憩;
case "04":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;
休憩;
ケース "05":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;
休憩;
ケース "06":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;
休憩;
case "07":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;
休憩;
case "08":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;
休憩;
case "09":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;
休憩;
ケース "10":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;
休憩;
case "11":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;
休憩;
case "12":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;
休憩;
}
$endday_from_startday=$endday_from_newyear;
}
return ($endday_from_startday);
}
else
{
// 異年!
$differ_year=substr($end_day,0,4)-substr($start_day,0,4);
$how_int_4_floor=フロア($異なる年/4)+1; // 方向下取整
$how_int_4_ceil=ceil($differ_year/4)+1; // 向上取整
if($how_int_4_floor==$how_int_4_ceil)
$how_leap_year=$how_int_4_floor-1;
それ以外の場合
$how_leap_year=$how_int_4_floor;
$how_noleap_year=$differ_year-$how_leap_year;
$differ_year2day=$how_noleap_year*365+$how_leap_year*366;
if( is_int(substr($end_day,0,4)/4) )
$leap_day=29; //うるう年
else
$leap_day=28;
if(substr($end_day,4,2)==substr($start_day,4,2))
{
// 同じ月
$endday_from_startday=$di ffer_year2day+substr($end_day,4,2) ;
}
else
{
// 同じ月ではありません
switch (substr($end_day,4,2))
{
ケース "01":
$endday_from_newyear=substr($end_day,6,2)+1;
休憩;
ケース "02":
$endday_from_newyear=substr($end_day,6,2)+1+31;
休憩;
ケース "03":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31;
休憩;
case "04":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;
休憩;
ケース "05":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;
休憩;
ケース "06":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;
休憩;
case "07":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;
休憩;
case "08":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;
休憩;
case "09":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;
休憩;
ケース "10":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;
休憩;
case "11":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;
休憩;
case "12":
$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;
休憩;
} // 切り替えの終了
$endday_from_startday=$endday_from_newyear+$differ_year2day;
} //同じ月ではない月末
return ($endday_from_startday);
} // 年末
} // $end_day>=$start_day の終了
} // 関数の終了
$start_day="2000-01-01";
$end_day="2011-01-01";
echo "您输入的是:".$end_day."
n";
$endday_from_startday=cal_start2end($end_day,$start_day);
echo "该日距離离$start_day共 ".$endday_from_startday." 天";
?>
時間少了、那位大虾は任意の二日間の期間を計算するために修正できます!!!!