摘要:格式化时间戳中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳至少我习惯这样,所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码下面是封装好的方法刚刚秒前分钟前小时前天前或
格式化时间戳 tags: PHP
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; }
或者 更详细的
public static function formatTime($time) { if (is_int($time)) { $time = intval($time); } elseif ($time instanceof Carbon) { $time = intval(strtotime($time)); } else { return ""; } $ctime = time(); $t = $ctime - $time; //时间差 (秒) if ($t < 0) { return date("Y-m-d", $time); } $y = intval(date("Y", $ctime) - date("Y", $time));//是否跨年 if ($t == 0) { $text = "刚刚"; } elseif ($t < 60) {//一分钟内 $text = $t . "秒前"; } elseif ($t < 3600) {//一小时内 $text = floor($t / 60) . "分钟前"; } elseif ($t < 86400) {//一天内 $text = floor($t / 3600) . "小时前"; // 一天内 } elseif ($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) . "天前"; } } elseif ($t < 31536000 && $y == 0) {//一年内 不跨年 $m = date("m", $ctime) - date("m", $time) - 1; if ($m == 0) { $text = floor($t / 86400) . "天前"; } else { $text = $m . "个月前"; } } elseif ($t < 31536000 && $y > 0) {//一年内 跨年 $text = (12 - date("m", $time) + date("m", $ctime)) . "个月前"; } else { $text = (date("Y", $ctime) - date("Y", $time)) . "年前"; } return $text; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22143.html
摘要:毫秒转换友好的显示格式输出格式小时分钟秒获取当前时间戳分钟秒小时分钟秒超过天秒毫秒转换友好的显示格式毫秒转换友好的显示格式输出格式小时前获取时间戳去掉时间戳后三位,与时间戳保持一致存储转换值十分钟内刚刚超过十分钟少于小时分钟前 /** * 毫秒转换友好的显示格式 * 输出格式:21小时28分钟15秒 * @param {[type]} time [description] *...
摘要:有效周期标识符如下年月日周时分秒间隔约定中既可以有时间也可以有日期,如果有时间需要在日期和时间之间加上字母,例如,间隔约定表示间隔两天,间隔约定表示间隔两天五小时两分钟。 前言 以前更改时间格式的时候经常使用date方法,后来知道php竟然自带datetime类处理时间格式,记录一下用法,方便以后使用 实例化 在yii 1.1中,可以直接写成 $datetime = new DateT...
摘要:写在前面前两天写了一篇常见的获取时间戳,今天来一篇续集吧,日期和时间戳的互转预备知识知道什么是时间戳即距离年月日时分秒的毫秒数如果你要用到的是秒,那也行,单位问题而已。同样的道理要会把时间戳转化成我们想要的日期格式。 写在前面 前两天写了一篇《常见的Javascript获取时间戳》,今天来一篇续集吧,日期和时间戳的互转 预备知识 知道什么是时间戳:即距离1970年01月01日00时0...
摘要:在不牺牲性能的情况下实现相对时间的本地化格式化。用法与示例以下示例展示了如何使用英语创建相对时间格式化程序。需要注意的是传递给构造函数的参数必须是一个语言标记,或者是一个包括多个语言标记的数组。 原文:The Intl.RelativeTimeFormat API 作者:Mathias Bynens(@mathias) 现代 Web 应用程序通常使用昨天,42秒前或3个月之类的短语,...
阅读 1533·2021-09-22 15:52
阅读 3442·2021-09-22 14:59
阅读 2827·2021-09-02 15:12
阅读 957·2021-08-20 09:35
阅读 1549·2019-08-30 14:09
阅读 2692·2019-08-30 13:56
阅读 1626·2019-08-26 18:27
阅读 3348·2019-08-26 13:37