请先试着理解这个问题。
我希望PHP代码在PHP中找到两个日期(天数)之间的差异,并将结果存储为php中的变量中的numeric/int值
我知道会使用date_diff()函数。但是如何??我在Windows 7上使用wampserver 2.2我的PHP版本是5.3.12请帮助
$date = new DateTime('2014-01-31');
$date2 = new DateTime('2014-02-04');
$diff = date_diff($date, $date2, true);
$difference = $diff->format("%a"); // 4
这将在几天内给你带来不同。如果您想要除天数以外的其他内容,可以在此处查看可能的格式:http://php.net/manual/en/dateinterval.format.php
正如您所看到的,函数date_diff()
非常易于使用。它将返回一个DateInterval
对象,然后您可以对其进行格式化,以获得所需的结果。
我能想到的最好的解决方案是将日期转换为timestamp
,然后得到差异。一个例子是:-
$date1 = date('Y-m-d H:i:s');
$date2 = date('Y-m-d H:i:s'); //I know it's same, it will be different in your case.
//conver it to timestamp now
$date1_timestamp = strtotime($date1);
$date2_timestamp = strtotime($date2);
//calculate difference.
$difference = $date2_timestamp - $date2_timestamp;
//the difference variable holds an int value.
//however, if you want to convert it back to readable date, you can do it like this
$difference_readable_date = date('m/d/Y', $difference);
我的函数用于所有赔率的一次或两次,日期或时间戳。。
function time_Diff($time2_, $time1_ = false) {
$date1 = new DateTime();
if ($time1_) {
$time1 = preg_match('/[-/]/', $time1_) ? strtotime($time1_) : $time1_;
$date1->setTimestamp($time1);
}
$date2 = new DateTime();
$time2 = preg_match('/[-/]/', $time2_) ? strtotime($time2_) : $time2_;
$date2->setTimestamp($time2);
$interval = $date1->diff($date2);
$diffrent_ = $interval->format('%Y Years %m Months %d Days %H:%I:%S');
$diffrent = str_replace(['00 Years', ' 0 Months', ' 0 Days', '00:00:00'], '', $diffrent_);
$returner = str_replace(['01 Years', ' 1 Months', ' 1 Days'], ['01 Year', ' 1 Month', ' 1 Day'], $diffrent);
return trim($returner);
}