php时间戳格式化显示友好的时间函数分享

网络编程 2025-03-25 04:35www.168986.cn编程入门

友好的时间显示:PHP实现详解

在诸多社交媒体系统中,如微博,我们经常能看到一种友好的时间显示方式,如“刚刚”、“5秒前”、“5小时前”等。这种显示方式不仅使时间的显示更为生动,而且更加便于用户理解。本文将详细如何使用PHP实现这样的功能。

要实现这种友好的时间显示,我们需要按照以下思路进行:

1. 如果时间跨度超过一年并且大于三天,直接显示具体的日期。

2. 如果是当天,根据时间跨度进一步细分:

一分钟内的显示“几秒之前”;

一小时内的显示“几分钟前”;

超过一小时的显示“几小时前”。

3. 如果是昨天,则显示“昨天几点”。

4. 如果是前天,则显示“前天几点”。

5. 如果时间跨度超过三天但未跨年,则显示为“几月几号”。

基于以上思路,我们可以开始编写PHP代码来实现这个功能。以下是具体的实现代码:

```php

function formatTime($time){

$now = time(); // 当前时间的时间戳

$day = date('Y-m-d',$time); // 需要格式化的时间

$today = date('Y-m-d'); // 今天日期

$dayArr = explode('-',$day); // 将日期拆分为年、月、日

$todayArr = explode('-',$today); // 将今天日期拆分为年、月、日

// 计算距离的天数,注意此方法对于超过一个月的天数计算可能存在误差

$days = ($todayArr[0]-$dayArr[0])365 + ($todayArr[1]-$dayArr[1])30 + ($todayArr[2]-$dayArr[2]);

// 计算距离的秒数

$secs = $now - $time;

if(($todayArr[0]-$dayArr[0]>0 && $days>3)){ // 跨年并且超过三天,直接返回具体日期

return date('Y-m-d',$time);

} else {

if($days < 1){ // 如果是今天

if($secs < 60) return $secs.'秒前'; // 一分钟内

elseif($secs < 3600) return floor($secs/60)."分钟前"; // 一小时内

else return floor($secs/3600)."小时前"; // 超过一小时

} else if($days < 2){ // 如果是昨天

$hour = date('h',$time); // 获取小时

return "昨天".$hour.'点';

} elseif($days < 3){ // 如果是前天

$hour = date('h',$time); // 获取小时

return "前天".$hour.'点';

} else { // 三天前及以上

return date('m月d号',$time); // 返回友好日期格式

}

}

}

```

此代码仅供参考,您可以根据实际需要进行调整和优化。如果您有任何建议或更好的方法,欢迎分享和指正。

上一篇:使用PHP免费发送定时短信的实例 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by