php格式化时间戳显示友好的时间实现思路及代码
友好的时间格式在网页设计中是非常常见的,它能够提升用户体验,使得时间的展示更加直观和易于理解。那么如何在PHP中实现这种友好的时间格式呢?让我们深入一下。
想象一下,你正在浏览微博或QQ空间,每一条动态或消息旁边的时间戳都会以“XX分钟前”、“XX小时前”或者“昨天”等形式展示,这就是所谓的友好时间格式。这种格式能够让我们更快速地理解内容的新鲜程度。
实现友好时间格式的PHP代码其实并不复杂。我们需要明确几个规则:
1. 如果是今天,并且时间间隔在一分钟以内,则显示“几秒之前”。
2. 如果是今天,时间间隔在一小时以内,则显示“XX分钟前”。
3. 如果是今天且时间间隔超过一小时,则显示“XX小时前”。
4. 如果是昨天,则显示“昨天XX点”。
5. 如果是前天,则显示“前天XX点”。
6. 如果时间间隔超过三天但没有跨年,则显示为具体的日期,如“XX月XX日”。
7. 如果是跨年并且时间间隔超过三天,则显示完整的日期。
基于上述规则,我们可以编写如下的PHP函数来实现友好时间格式:
```php
function formatFriendlyTime($time) {
$now = time(); // 获取当前时间戳
$day = date('Y-m-d', $time); // 获取给定时间的年月日部分
$today = date('Y-m-d'); // 获取今天的年月日部分
$timeDifferenceInSeconds = $now - $time; // 计算时间差(秒)
$daysDifference = date('z', strtotime($day)) - date('z', strtotime($today)); // 计算日期差(天数)
if ($daysDifference > 0 && $daysDifference > 3) { // 跨年且超过三天的情况
return date('Y年m月d日', $time); // 返回完整的日期格式
} else {
if ($daysDifference < 1) { // 今天的情况
if ($timeDifferenceInSeconds < 60) return '刚刚'; // 刚过去的时间用“刚刚”表示
elseif ($timeDifferenceInSeconds < 3600) return floor($timeDifferenceInSeconds / 60) . '分钟前'; // 一小时以内用分钟表示
else return floor($timeDifferenceInSeconds / 3600) . '小时前'; // 超过一小时用小时表示
} elseif ($daysDifference < 2) { // 昨天的情况
return '昨天 ' . date('H点', $time); // 返回昨天的某个时间点
} elseif ($daysDifference < 3) { // 前天的情况
return '前天 ' . date('H点', $time); // 返回前天的某个时间点
} else { // 超过三天的情况(没有跨年)
return date('m月d日', $time); // 返回具体的日期格式,如“XX月XX日”
}
}
}
```
这个函数能够根据你的需求生成友好的时间格式。你可以根据自己的需要调整函数中的某些细节,比如时间的显示方式、语言等。希望这个分享对你有所帮助!
编程语言
- php格式化时间戳显示友好的时间实现思路及代码
- vue中的event bus非父子组件通信解析
- jQuery导航条固定定位效果实例代码
- jQuery ajax请求返回list数据动态生成input标签,并把
- php解析url的三个示例
- Yii2增加验证码步骤详解
- WAF的正确bypass
- vue.js+Echarts开发图表放大缩小功能实例
- javascript中神奇的 Date对象小结
- php自定义的格式化时间示例代码
- jQuery实现弹窗下底部页面禁止滑动效果
- VS2012下QT creator登录对话框设计
- ES6下React组件的写法示例代码
- PHP实现懒加载的方法
- ASP中只有UrlEncode,没有Urldecode问题的解决方法?
- javascript实现类似百度分享功能的方法