PHP方法来计算一个财政年度的树叶数量


PHP way to calculate no of leaves in a fiscal year

假设变量中有三个日期,如

样品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;
?>