ホームページ  >  記事  >  バックエンド開発  >  2000 年 1 月 1 日から指定された日までの日数を計算する_PHP チュートリアル

2000 年 1 月 1 日から指定された日までの日数を計算する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:02:531043ブラウズ

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)
{ // 終了日が開始日より大きい場合
(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." 天";

?>




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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/316431.html技術記事これは、2000 年 01 月 01 日の指定日の天数の関数です。 br (算头也算尾) 日期格式: YYYY-MM-DD br ?php //计算从2000年01月01日始まりまで某日の天数ふ…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。