如何使用程序样式方法计算以下两个日期的月数?PHP - 如何计算特定日期之后的月份数
PHP代码。
$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date
如何使用程序样式方法计算以下两个日期的月数?PHP - 如何计算特定日期之后的月份数
PHP代码。
$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date
$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date
$diff = strtotime($current_date) - strtotime($delete_date);
$months = floor(floatval($diff)/(60 * 60 * 24 * 365/12));
echo $months . "\n";
我怀疑有一些边缘情况下,这返回错误的值。 (每个月不是365/12天。) – 2011-01-14 19:11:42
@middaparka说什么:这可能会导致例如在2月1日至3月2日的范围内。但是,真的不太清楚OP的确切需求,所以它可能没有问题 – 2011-01-14 19:13:16
好吧,这一切都取决于问题的背景。可以考虑每个月有30天还是每月365/12 = 30.41666天?另外:是否可以使用“floor”来计算几个月?或“圆”?或者`ceil`? – scoffey 2011-01-14 19:15:33
您正在寻找DateTime::diff?
$delete_date = "2000-01-12 08:02:39";
$date_format = 'Y-m-d H:i:s';
$current_date = date($date_format);
$diff = date_diff(date_create_from_format($date_format, $delete_date), date_create());
$months = $diff->m;
沿着这条线的东西。
这是你在找什么?
$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date
// convert date to int
$delete_date = strtotime($delete_date);
$current_date = strtotime($current_date);
// calculate it
$diff = $delete_date - $current_date;
// convert int to time
$conv_diff = date('format', $diff);
使用日期时间,你会得到总的几个月是这样的:
$d1 = new DateTime("2000-01-12 08:02:39");
$d2 = new DateTime();
$d3 = $d1->diff($d2);
$months = ($d3->y*12)+$d3->m;
你仍然需要处理剩下的日子$d3->d
...但是,这取决于你的需要。
试试这个,很简单,也许不是enogh小鸡,但非常有效。
function calculateMonthsBetweenDates($fMonth, $fDay, $fYear, $tMonth, $tDay, $tYear)
{
//Build datetime vars using month, day and year
$dateFrom = mktime(0, 0, 0, $fMonth, $fDay, $fYear);
$dateTo = mktime(0, 0, 0, $tMonth, $tDay, $tYear);
//Check dateTo is a later date than dateFrom.
if($dateFrom<=$dateTo){
$yearF = date("Y", $dateFrom);
$yearT = date("Y", $dateTo);
$monthF = date("m", $dateFrom);
$monthT = date("m", $dateTo);
//same year
if ($yearF == $yearT)
$months = ($monthT - $monthF);
else{
//different year
$months = (12*($yearT-$yearF)-$monthF) + $monthT;
}
return $months;
}
else
return false; //or -1
}
你想要两个日期之间的月数*吗? – 2011-01-14 19:07:43
是的,这是我;我在寻找 – HELP 2011-01-14 19:08:59