如何打印日期就像Eg:2小时前,3月10日

时间:2011-05-16 03:01:26

标签: php date-format

  function timeSpent($date_created, $endingDay)
  {
      $diff = abs(strtotime($date_created) - strtotime(date("Y-m-d H:i:s")));
      $years = floor($diff / (365 * 60 * 60 * 24));
      $months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
      $days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
      $hours = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24) / (60 * 60));
      $minuts = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24 - $hours * 60 * 60) / 60);
      $seconds = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24 - $hours * 60 * 60 - $minuts * 60));
           $week = floor($days / 7);
          $day = $days % 7;
          if ($week < 1 && $week != 0) {
             return $days . " days - " . $hours . " hrs - " . $minuts . "- min" . $week;
          } elseif ($week == 0) {
              if ($days != 0) {
                  return $days . "days " . $hours . "hours ago";
              } elseif ($hours != 0) {
                  return $hours . "hours " . $minuts . "minute ago";
              } elseif ($minuts) {
                  return $minuts . "minute " . $seconds . "seconds ago";
              } else {
                  return "few seconds ago";
              }
          } else {
              $stamp = strtotime($date_created);
              return date("F d Y", $stamp);
          }
      }
  }

我正在使用此功能,但它无法正常工作。

1 个答案:

答案 0 :(得分:0)

我注意到的一个错误是,如果您要进入4月15日,可能会有1个月零周。这将导致仅输出日期和时间。更改以下内容。

} elseif ($week == 0) {

} elseif ($week == 0 && $months == 0 && $years == 0) {

这可能会导致您的问题,具体取决于您输入的日期。