php - 如何在 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中,而不是工作数小时、一天等......
解决方案
尝试这个
$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";
}
推荐阅读
- android - CardView 不显示任何数据
- python - 如何在 scipy.optimize.minimize 中构建 x[0] + x[1] > 0 约束?
- sql - SQL WHEN 函数 - 如何修复语法错误?
- r - 将整数分布在几行上的次数与除以常数一样多
- javascript - 基于流行度的Div自动放置
- mysql - sql从具有日期范围条件的表中选择
- python - pip install 抛出与 setup.py 中的函数相关的错误
- c# - 如何以编程方式访问 IFC 映射文件?
- javascript - 怎么做两个
- java - Selenium 中的 FluentWait 如何实现 until() 方法