条件DateDiff

时间:2015-11-06 06:21:50

标签: php datediff

我曾经访问了一些帖子,检索了SO中两个日期之间的日期差异,但它并没有给我我想要的答案。阅读文档相同,我有理解它是如何工作的问题。

我已经尝试过编码,但它的行为并不像我期望的那样。这是我的代码:

<?php
$currentDate = new DateTime();
$createDateJoin = date_create($getDate['date_joined']);
$dateJoin = date_format($createDateJoin, "Y-m-d");

$yearDifference = $currentDate->diff($createDateJoin);

  if ($yearDifference->d < 31 && $yearDifference->m = 0 && $yearDifference->y == 0) {
       echo $yearDifference->d . " days";
        } else if ($yearDifference->m > 3) {
              echo $yearDifference->m . " month";
        } else if ($yearDifference->y > 1) {
              echo $yearDifference->y . " years";
      } else {
              echo "Not yet assigned";
       }
 ?>

从上面的代码中我可以看到,在计算两个日期之间的差异后,我试图进行打印,它符合$yearDifference->的条件。我所经历的程序的行为确实如此不打印出我想要的东西(例如,工作超过1年的工作人员将打印出他们工作了多少年,刚刚进入的人数为几个月,不到一个月的新员工将打印出几天。)

我想知道->d/m/y如何运作,我如何才能真正利用dmy来正确绘制具体日期。我还注意到,当我将$yearDifference视为Stringint时,条件会产生不同的结果。那么我应该怎样对待这种类型来更容易地操纵呢?非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码获取日期不同的方法diff()对象返回更多值以检查您是否可以print_r您的对象将打印通过diff()方法返回的所有数据成员

<?php
echo get_date_diff(strtotime('1990-10-12'),strtotime('2015-10-14'));
function get_date_diff($date,$dateEnd) {
    $dStart = new DateTime(date("Y-m-d", $date));
    $dEnd = new DateTime(date("Y-m-d", $dateEnd));
    $dDiff = $dStart->diff($dEnd);
   return($dDiff->y.' years <br>'.$dDiff->m.' months <br>'.$dDiff->d. ' days');
}

 ?>