首先给出实现方法:通过时间差判断显示“刚刚”“X分钟前”等;再计算天、时、分、秒用于倒计时;最后扩展支持“昨天”“X天前”等更优体验,需注意时区设置以保证准确性。
在PHP中,将时间戳转换为友好时间显示(如“刚刚”、“3分钟前”、“2小时前”)是一种常见需求,尤其用于社交、评论、消息等场景。除了中文描述,有时也需要计算两个时间之间的天、时、分、秒差值并格式化输出。下面介绍实现方法。
通过比较当前时间与目标时间戳的差值,判断应显示哪种描述:
示例函数:
function friendlyDate($timestamp) {
$now = time();
$diff = $now - $timestamp;
if ($diff < 0) {
return '未来时间';
} elseif ($diff < 60) {
return '刚刚';
} elseif ($diff < 3600) {
return floor($diff / 60) . '分钟前';
} elseif ($diff < 86400) {
return floor($diff / 3600) . '小时前';
} else {
return date('Y-m-d', $timestamp);
}}
使用方式:
echo friendlyDate(strtotime('-25 minutes')); // 输出:25分钟前
echo friendlyDate(strtotime('-2 days')); // 输出:2025-04-03(假设今天是04-05)
适用于倒计时、耗时统计等场景。可通过时间差计算出完整的天、时、分、秒。
示例函数:
function formatTimeDiff($start, $end = null) {
$end = $end ?: time();
$diff = abs($end - $start); // 确保为正数
$days = floor($diff / 86400);
$hours = floor(($diff % 86400) / 3600);
$minutes = floor(($diff % 3600) / 60);
$seconds = $diff % 60;
$text = '';
if ($days) $text .= $days . '天';
if ($hours) $text .= $hours . '小时';
if ($minutes) $text .= $minutes . '分';
if ($seconds) $text .= $seconds . '秒';
return $text ?: '0秒';
}
使用示例:
$start = strtotime('2025-04-03 10:00:00');
echo formatTimeDiff($start); // 如:1天3小时25分10秒
3. 扩展:支持更复杂的中文描述(如“上周”、“一个月前”)
可进一步优化判断逻辑,提升用户体验:
- 昨天:date('Y-m-d', $timestamp) === date('Y-m-d', strtotime('-1 day'))
- 上周:week差值判断
- 超过7天但不足30天:显示“X天前”
- 超过30天:显示“m月d日”
进阶版本片段:
function advancedFriendlyDate($timestamp) {
$now = time();
$diff = $now - $timestamp;
if ($diff < 60) return '刚刚';
if ($diff < 3600) return floor($diff / 60) . '分钟前';
if ($diff < 3600 * 24) return floor($diff / 3600) . '小时前';
$todayStart = strtotime(date('Y-m-d'));
$yesterdayStart = $todayStart - 86400;
$dateStr = date('m月d日', $timestamp);
if ($timestamp >= $yesterdayStart && $timestamp < $todayStart) {
return '昨天';
}
if ($diff < 3600 * 24 * 7) {
return floor($diff / 86400) . '天前';
}
if ($diff < 3600 * 24 * 30) {
$weeks = floor($diff / (3600 * 24 * 7));
return $weeks . '周前';
}
return $dateStr;}
基本上就这些。根据项目需要选择合适粒度的友好时间显示方式,既能提升可读性,也能让界面更人性化。注意时区设置(date_default_timezone_set)确保时间准确。不复杂但容易忽略细节。
# php
# 格式化输出
# 2025
# date
# timestamp
# 昨天
# 转换为
# 倒计时
# 上周
# 进阶
# 是一种
# 适用于
# 能让
# 几分钟
# 可通过
相关文章:
香港服务器网站推广:SEO优化与外贸独立站搭建策略
香港服务器WordPress建站指南:SEO优化与高效部署策略
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
定制建站流程解析:需求评估与SEO优化功能开发指南
设计网站制作公司有哪些,制作网页教程?
如何使用Golang table-driven基准测试_多组数据测量函数效率
建站VPS能否同时实现高效与安全翻墙?
深圳网站制作培训,深圳哪些招聘网站比较好?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站ABC备案流程中有哪些关键注意事项?
建站之星如何一键生成手机站?
深圳网站制作案例,网页的相关名词有哪些?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何高效配置IIS服务器搭建网站?
青岛网站建设如何选择本地服务器?
如何实现建站之星域名转发设置?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
在线制作视频网站免费,都有哪些好的动漫网站?
如何用搬瓦工VPS快速搭建个人网站?
网站代码制作软件有哪些,如何生成自己网站的代码?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何用景安虚拟主机手机版绑定域名建站?
如何获取上海专业网站定制建站电话?
建站主机核心功能解析:服务器选择与网站搭建流程指南
简单实现Android验证码
平台云上自主建站:模板化设计与智能工具打造高效网站
5种Android数据存储方式汇总
零服务器AI建站解决方案:快速部署与云端平台低成本实践
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何在宝塔面板中创建新站点?
如何选择适合PHP云建站的开源框架?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何在建站主机中优化服务器配置?
如何快速搭建FTP站点实现文件共享?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
建站VPS配置与SEO优化指南:关键词排名提升策略
建站之星×万网:智能建站系统+自助建站平台一键生成
,怎么在广州志愿者网站注册?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何构建满足综合性能需求的优质建站方案?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
存储型VPS适合搭建中小型网站吗?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何快速重置建站主机并恢复默认配置?
*请认真填写需求信息,我们会在24小时内与您取得联系。