日度归档:2014年3月22日

PHP计算任意两个日期之间的天数

PHP面试题中,关于日期的题目作为基础考题经常出现,下面讨论一下获取两个日期之间的天数的方法。

收到一个答案,拆分年、月、日,分别进行减法,然后统计天数,好累。

针对低版本的PHP可以用下面的方式搞定:

 

$date1 = '2014-02-18 00:09:13';
	$date2 = '2014-03-19 00:02:18';

	function differDays($date1, $date2) {

		$differNums = strtotime($date2) - strtotime($date1);

		$differNums = $differNums / (3600 * 24);

		echo floor(abs($differNums));

	}

	echo differDays($date1, $date2);

	echo "\n";
//或者
	function difDays($date1,$date2){ 

		$date1 = substr($date1, 0, 10);
		$date2 = substr($date2, 0, 10);

		$time1 = explode("-", $date1); 
		$time2 = explode("-", $date2); 

		$date1 = mktime(0, 0, 0, $time1[1],$time1[2],$time1[0]); 
		$date2 = mktime(0, 0, 0, $time2[1],$time2[2],$time2[0]);

		return ($date2 - $date1)/(3600*24) - 1; 
	}

	echo difDays($date1, $date2);

PHP5.3以上版本可以使用date_diff:

 

function dateDiff($date1, $date2) {
		$datetime1 = new DateTime($date1);
		$datetime2 = new DateTime($date2);
		$interval = $datetime1->diff($datetime2);
		return $interval->format('%a');
	}

	echo dateDiff($date1, $date2);

 

本文例子下载:http://pan.baidu.com/s/1eQ1Nn14