假设变量中有三个日期,如
样品1。
$datehire = "2013-01-06";
$dateaniv = "2014-01-06";
$companyFiscalYr = "2014-06-01";
我需要得到$dateAniv之后的月份数。如果我从$dateAniv算到$companyFiscalYr ,我应该得到6片叶子
样品2。
$datehire = "2012-11-01";
$dateaniv = "2013-11-01";
$companyFiscalYr = "2014-06-01";
I should get 8 leaves
非常感谢
感谢
我认为这可能会影响
$date1 = new DateTime("2013-08-06");
$date2 = new DateTime("2014-08-06");
$FiscalYear = new DateTime("2015-06-06");
$intervalFY = date_diff($date2, $FiscalYear);
echo $intervalFY ->m + ($intervalFY ->y * 12) + 1 . ' months';
我还没有从上面的评论中回答你是如何定义"一个月"的,但这将给你一个开始:
<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%m months');
?>
请注意,如果你超过12个月,这可能会有困难。
如果你把一个月定义为30天,那么你可以使用$interval->format('$R%a')/30
,然后是floor()
或round()
结账http://php.net/manual/en/datetime.diff.php和http://php.net/manual/en/dateinterval.format.php
不,仔细想想,这是行不通的——由于2月的时间很短,1月底的日期总是会让你一团糟。试试这个:
<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$months1 = $datetime1->format('%y')*12 + $datetime1->format('%m');
$months2 = $datetime2->format('%y')*12 + $datetime2->format('%m');
echo ($months2-$months1).' months');
?>
试试这个:
<?php
$datehire = "2013-01-06";
$dateaniv = "2014-01-06";
$companyFiscalYr = "2014-06-01";
$datetime1 = date_create($dateaniv);
$datetime2 = date_create($companyFiscalYr);
$interval = date_diff($datetime1, $datetime2);
$leave = $interval->format('%m');
echo "Leaves:".$leave;
?>