首页 > 解决方案 > 如何在 php 中使用 diff 创建日期间隔

问题描述

我想在我的帖子中创建年龄。结果必须是这样的,例如:刚刚,1分钟前,1小时前,1天前,1个月前和1年前。

   $datetime1 = date_create($value['date']);
    $datetime2 = date_create("now");
    $diff=date_diff($datetime1,$datetime2);
    if($diff->i >0){
      $final_date = $diff->format("%I Minutes Ago");
    }else if($diff->h >0){
      $final_date = $diff->format("%H Hours Ago");
    }else if($diff->y >0){
      $final_date = $diff->format("%Y Years Ago");
    }else if($diff->m >0){
      $final_date = $diff->format("%M Months Ago");
    }else if($diff->d >0){
      $final_date = $diff->format("%D Days Ago");
    } else {
        $final_date = "Just Now";
    }

我的日期$value['date']是这样的2018-05-11 07:38:47

当我使用该代码运行时,结果仅显示在Minutes中,而不是工作数小时、一天等......

标签: phpdiffintervals

解决方案


尝试这个

$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y years %m months %d days %H hours %i minutes %s seconds');

或者如果您需要单独检查,请先检查年份

if($diff->y >0){
      $final_date = $diff->format("%Y Years Ago");
    }
 else if($diff->m >0){
      $final_date = $diff->format("%M Months Ago");
    }
 else if($diff->d >0){
      $final_date = $diff->format("%D Days Ago");
    }
 else if($diff->h >0){
      $final_date = $diff->format("%H Hours Ago");
    }
else if($diff->i >0){
      $final_date = $diff->format("%I Minutes Ago");
    }
else {
        $final_date = "Just Now";
    }

推荐阅读