CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳(至少我习惯这样),所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码

下面是封装好的方法
function formatTime($time) {
$time = (int) substr($time, 0, 10);
$int = time() - $time;
$str = '';
if ($int <= 2){
$str = sprintf('刚刚', $int);
}elseif ($int < 60){
$str = sprintf('%d秒前', $int);
}elseif ($int < 3600){
$str = sprintf('%d分钟前', floor($int / 60));
}elseif ($int < 86400){
$str = sprintf('%d小时前', floor($int / 3600));
}elseif ($int < 2592000){
$str = sprintf('%d天前', floor($int / 86400));
}else{
$str = date('Y-m-d H:i:s', $time);
}
return $str;
}
或者 更详细的
function formatTime($time)
{
$text = '';
$time = intval($time);
$ctime = time();
$t = $ctime - $time; //时间差
if ($t < 0) {
return date('Y-m-d', $time);
}
;
$y = date('Y', $ctime) - date('Y', $time);//是否跨年
switch ($t) {
case $t == 0:
$text = '刚刚';
break;
case $t < 60://一分钟内
$text = $t . '秒前';
break;
case $t < 3600://一小时内
$text = floor($t / 60) . '分钟前';
break;
case $t < 86400://一天内
$text = floor($t / 3600) . '小时前'; // 一天内
break;
case $t < 2592000://30天内
if($time > strtotime(date('Ymd',strtotime("-1 day")))) {
$text = '昨天';
} elseif($time > strtotime(date('Ymd',strtotime("-2 days")))) {
$text = '前天';
} else {
$text = floor($t / 86400) . '天前';
}
break;
case $t < 31536000 && $y == 0://一年内 不跨年
$m = date('m', $ctime) - date('m', $time) -1;
if($m == 0) {
$text = floor($t / 86400) . '天前';
} else {
$text = $m . '个月前';
}
break;
case $t < 31536000 && $y > 0://一年内 跨年
$text = (11 - date('m', $time) + date('m', $ctime)) . '个月前';
break;
default:
$text = (date('Y', $ctime) - date('Y', $time)) . '年前';
break;
}
return $text;
}
再分享一个类似的
//格式化友好显示时间
function formatTime($time){
$now=time();
$day=date('Y-m-d',$time);
$today=date('Y-m-d');
$dayArr=explode('-',$day);
$todayArr=explode('-',$today);
//距离的天数,这种方法超过30天则不一定准确,但是30天内是准确的,因为一个月可能是30天也可能是31天
$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){//跨年且超过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
# 格式化
# 时间戳
# Unix时间戳
# PHP中常用的字符串格式化函数总结
# 深入理解php printf() 输出格式化的字符串
# PHP vsprintf()函数格式化字符串操作原理解析
# PHP数字格式化
# PHP 防注入函数(格式化数据)
# PHP中信息格式化操作详解(MessageFormatter类)
# 前天
# 昨天
# 一年内
# 自己的
# 都是
# 月前
# 一个月
# 几天
# 几分钟
# 装了
# 两段
# 装好
# 年前
# 一分钟内
# 这种方法
# 网上
# str
# lt
# sprintf
# floor
相关文章:
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
建站之星如何配置系统实现高效建站?
建站之星官网登录失败?如何快速解决?
如何解决ASP生成WAP建站中文乱码问题?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何用腾讯建站主机快速创建免费网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何将凡科建站内容保存为本地文件?
如何用景安虚拟主机手机版绑定域名建站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何构建满足综合性能需求的优质建站方案?
如何通过老薛主机一键快速建站?
如何在橙子建站中快速调整背景颜色?
怀化网站制作公司,怀化新生儿上户网上办理流程?
大连网站设计制作招聘信息,大连投诉网站有哪些?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
股票网站制作软件,网上股票怎么开户?
如何在Tomcat中配置并部署网站项目?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站之星代理如何获取技术支持?
电商平台网站制作流程,电商网站如何制作?
如何确认建站备案号应放置的具体位置?
,如何利用word制作宣传手册?
建站之星导航配置指南:自助建站与SEO优化全解析
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何快速查询域名建站关键信息?
建站之星安装提示数据库无法连接如何解决?
已有域名和空间,如何快速搭建网站?
学校建站服务器如何选型才能满足性能需求?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
如何在云主机快速搭建网站站点?
如何在阿里云完成域名注册与建站?
c# 在ASP.NET Core中管理和取消后台任务
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
ui设计制作网站有哪些,手机UI设计网址吗?
如何续费美橙建站之星域名及服务?
小程序网站制作需要准备什么资料,如何制作小程序?
如何用搬瓦工VPS快速搭建个人网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何通过FTP空间快速搭建安全高效网站?
用v-html解决Vue.js渲染中html标签不被解析的问题
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站之星如何通过成品分离优化网站效率?
如何通过VPS建站无需域名直接访问?
*请认真填写需求信息,我们会在24小时内与您取得联系。