php 昨天,PHP时间转换今天昨天前天几天前

经常在朋友圈,QQ空间、微博上看到动态的发布时间、评论时间,都显示,昨天,前天,几天前,比起直接显示几月几日几分几秒要优雅的多。

于是自己的项目也想采用这种优雅直观的方式,网上找了各种计算相差几天的的例子,都是直接将时间戳相见除以86400,比如现在是17:08,动态更新的时间为前天22:00,这种方式计算的相差天数为1,而不是两天前。

实际情况应该是,昨天任何时间都算一天前,前天任意时间都算2天前,所以自己琢磨了一番,去动态更新时间与今天23:59:59相差的时间秒数与86400(24 x 3600)相除后,向下取整,这样就得到了相差的天数,比如昨天00:00~昨天23:59:59的任何时间与今天的23:59:59,都相差 86400~(86400 x 2) 天,也就是2天。

/**

* 获取已经过了多久

* PHP时间转换

* 刚刚、几分钟前、几小时前

* 今天昨天前天几天前

* @param string $targetTime 时间戳

* @return string

*/

function get_last_time($targetTime)

{

// 今天最大时间

$todayLast = strtotime(date('Y-m-d 23:59:59'));

$agoTimeTrue = time() - $targetTime;

$agoTime = $todayLast - $targetTime;

$agoDay = floor($agoTime / 86400);

if ($agoTimeTrue < 60) {

$result = '刚刚';

} elseif ($agoTimeTrue < 3600) {

$result = (ceil($agoTimeTrue / 60)) . '分钟前';

} elseif ($agoTimeTrue < 3600 * 12) {

$result = (ceil($agoTimeTrue / 3600)) . '小时前';

} elseif ($agoDay == 0) {

$result = '今天 ' . date('H:i', $targetTime);

} elseif ($agoDay == 1) {

$result = '昨天 ' . date('H:i', $targetTime);

} elseif ($agoDay == 2) {

$result = '前天 ' . date('H:i', $targetTime);

} elseif ($agoDay > 2 && $agoDay < 16) {

$result = $agoDay . '天前 ' . date('H:i', $targetTime);

} else {

$format = date('Y') != date('Y', $targetTime) ? "Y-m-d H:i" : "m-d H:i";

$result = date($format, $targetTime);

}

return $result;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值