ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 つの日付の差を計算するにはどうすればよいですか?

PHP で 2 つの日付の差を計算するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-20 12:59:01911ブラウズ

<?phpfunction getMonthNum( $date1, $date2, $tags='-' ){  $date1 = explode($tags,$date1);  $date2 = explode($tags,$date2);  return abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]); }echo getMonthNum("2013-02-01","2014-01-01",'-');?>


上記のコードでは 13 か月の差が計算されますが、これを正常にするために変更する方法がわかりません。


ディスカッション (解決策) への返信

ABS を削除
-11 を返すと、2013-02-01 が 2014-01-01 より 11 少ないことを意味します月
もちろん、戻り値 abs 全体を返すこともできますが、その場合は 11 か月の差しかわかりませんが、それが多いか少ないかはわかりません

function getMonthNum($date1,$date2){	$date1_stamp=strtotime($date1);	$date2_stamp=strtotime($date2);	list($date_1['y'],$date_1['m'])=explode("-",date('Y-m',$date1_stamp));	list($date_2['y'],$date_2['m'])=explode("-",date('Y-m',$date2_stamp));	return abs($date_1['y']-$date_2['y'])*12 +$date_2['m']-$date_1['m']; } echo getMonthNum("2013-02-01","2014-01-01");echo getMonthNum("20130201","20140101");echo getMonthNum("201302","201401");

<?phpfunction getMonthNum( $date1, $date2, $tags='-' ){  $date1 = explode($tags,$date1);  $date2 = explode($tags,$date2);  if ($date1[0]>=$date2[0]){  return abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);  }  else{  return abs($date2[0] - $date1[0]) * 12 - abs($date1[1] - $date2[1]);  } }echo getMonthNum("2013-02-01","2014-01-01",'-');?>

上記は間違って書かれています。 。 。 。 。再送信:

function getMonthNum($date1,$date2){	$date1_stamp=strtotime($date1);	$date2_stamp=strtotime($date2);	list($date_1['y'],$date_1['m'])=explode("-",date('Y-m',$date1_stamp));	list($date_2['y'],$date_2['m'])=explode("-",date('Y-m',$date2_stamp));	return abs(($date_2['y']-$date_1['y'])*12 +$date_2['m']-$date_1['m']); } echo getMonthNum("2013-02-01","2014-01-01");echo getMonthNum("20130201","20140101");echo getMonthNum("201302","201401");

function getMonthNum($date1,$date2){	$date1_stamp=strtotime($date1);	$date2_stamp=strtotime($date2);	list($date_1['y'],$date_1['m'])=explode("-",date('Y-m',$date1_stamp));	list($date_2['y'],$date_2['m'])=explode("-",date('Y-m',$date2_stamp));	return abs($date_1['y']-$date_2['y'])*12 +$date_2['m']-$date_1['m']; } echo getMonthNum("2013-02-01","2014-01-01");echo getMonthNum("20130201","20140101");echo getMonthNum("201302","201401");

echo getMonthNum("2013-02-01","2012-01-01");//11
そうですか?

$start_time = "2014-01-01";
$end_time = "2015-05-08";
for (;1==1;){
エコー日付( "Y-m",strtotime($start_time))."

$end_time = date("Y-m",strtotime($end_time));

if($start_time= =$end_time){
ブレーク;
}
$start_time = date("Y-m",strtotime("$start_time +1 month"));

function getMonthNum( $date1, $date2, $tags='-'){  $time1 = strtotime($date1);  $time2 = strtotime($date2);  $date1 = explode($tags,$date1);  $date2 = explode($tags,$date2);  $months =abs($date1[0]-$date2[0])*12;  if($time1 > $time2){	return $months+$date1[1]-$date2[1];  }else{	return -($months+$date2[1]-$date1[1]);  } }

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