ホームページ  >  記事  >  php教程  >  2000 年 1 月 1 日から指定した日付までの日数を計算します。

2000 年 1 月 1 日から指定した日付までの日数を計算します。

WBOY
WBOYオリジナル
2016-06-13 12:38:291063ブラウズ

2000 年 1 月 1 日から指定日までの日数を計算する関数です


(開始日と終了日もカウントされます) 日付形式は YYYY-MM-DD

// 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)
{ // 終了日が開始日より後です
if(substr($end_day,0,4)== substr($start_day,0,4) )

// 同じ月
$endday_from_startday=$ end_day-$start_day 1;

}
else
{
// 同じ月ではありません


switch (substr($end_day,4,2)
{
ケース "01":
$endday_from_newyear=substr($end_day,6,2) 1;
休憩;
case "02":
$endday_from_newyear=substr($end_day,6,2) 31;
休憩;
case "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;
休憩;
case "05":
$endday_from_newyear=substr($end_day,6,2) 1 $leap_day 31*2 30;
休憩;
case "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=フロア($differ_year/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;
else
$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=$differ_year2day substr($end_day,4,2);

}
else
{
// 同じ月ではありません


switch (substr($end_day,4,2)
{
ケース "01":
$endday_from_newyear=substr($end_day,6,2) 1;
休憩;
case "02":
$endday_from_newyear=substr($end_day,6,2) 1 31;
休憩;
case "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;
休憩;
case "05":
$endday_from_newyear=substr($end_day,6,2) 1 $leap_day 31*2 30;
休憩;
case "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." 天";

?>




時間極少了、那位大虾は任意の二日期間の期間間隔を計算するように修正できます!!!! 

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。