php时间戳格式化显示友好的时间函数分享
友好的时间显示: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时间戳格式化显示友好的时间函数分享
- 使用PHP免费发送定时短信的实例
- jQuery如何使用自动触发事件trigger
- 简单实现兼容各大浏览器的js复制内容到剪切板
- js实现页面a向页面b传参的方法
- angularJS深拷贝详解
- js获取页面引用的css样式表中的属性值方法(推荐
- 恢复sql server 2000误删数据的解决办法
- 浅谈jQuery中height与width
- Yii框架参数配置文件params用法实例分析
- php数组遍历类与用法示例
- ThinkPHP V2.2说明文档没有说明的那些事实例小结
- JavaScript“尽快失败”的原则实例详解
- Angular.Js中ng-include指令的使用与实现
- Jquery中的$.each获取各种返回类型数据的使用方法
- js实现添加删除表格(两种方法)