php 友好时间转换方法
2016-07-26 09:19
501 查看
我们在社交产品中的时间显示都不是直接显示具体时间,而是转换成友好时间,以下就是转换函数
/**
* 友好的时间显示
*
* @param int $sTime 待显示的时间
* @param string $type 类型. normal | mohu | full | ymd | other
* @param string $alt 已失效
* @return string
*/
function friendlyDate($sTime, $type = 'normal', $alt = 'false')
{
if (!$sTime) {
return '';
}
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date('z', $cTime)) - intval(date('z', $sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date('Y', $cTime)) - intval(date('Y', $sTime));
//normal:n秒前,n分钟前,n小时前,日期
if ($type == 'normal') {
if ($dTime < 60) {
if ($dTime < 10) {
return '刚刚'; //by yangjs
} else {
return intval(floor($dTime / 10) * 10).'秒前';
}
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
//今天的数据.年份相同.日期相同.
} elseif ($dYear == 0 && $dDay == 0) {
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i', $sTime);
} elseif ($dYear == 0) {
return date('m月d日 H:i', $sTime);
} else {
return date('Y-m-d H:i', $sTime);
}
} elseif ($type == 'mohu') {
if ($dTime < 60) {
return $dTime.'秒前';
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600).'小时前';
} elseif ($dDay > 0 && $dDay <= 7) {
return intval($dDay).'天前';
} elseif ($dDay > 7 && $dDay <= 30) {
return intval($dDay / 7).'周前';
} elseif ($dDay > 30) {
return intval($dDay / 30).'个月前';
}
//full: Y-m-d , H:i:s
} elseif ($type == 'full') {
return date('Y-m-d , H:i:s', $sTime);
} elseif ($type == 'ymd') {
return date('Y-m-d', $sTime);
} else {
if ($dTime < 60) {
return $dTime.'秒前';
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600).'小时前';
} elseif ($dYear == 0) {
return date('Y-m-d H:i:s', $sTime);
} else {
return date('Y-m-d H:i:s', $sTime);
}
}
}
/**
* 友好的时间显示
*
* @param int $sTime 待显示的时间
* @param string $type 类型. normal | mohu | full | ymd | other
* @param string $alt 已失效
* @return string
*/
function friendlyDate($sTime, $type = 'normal', $alt = 'false')
{
if (!$sTime) {
return '';
}
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date('z', $cTime)) - intval(date('z', $sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date('Y', $cTime)) - intval(date('Y', $sTime));
//normal:n秒前,n分钟前,n小时前,日期
if ($type == 'normal') {
if ($dTime < 60) {
if ($dTime < 10) {
return '刚刚'; //by yangjs
} else {
return intval(floor($dTime / 10) * 10).'秒前';
}
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
//今天的数据.年份相同.日期相同.
} elseif ($dYear == 0 && $dDay == 0) {
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i', $sTime);
} elseif ($dYear == 0) {
return date('m月d日 H:i', $sTime);
} else {
return date('Y-m-d H:i', $sTime);
}
} elseif ($type == 'mohu') {
if ($dTime < 60) {
return $dTime.'秒前';
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600).'小时前';
} elseif ($dDay > 0 && $dDay <= 7) {
return intval($dDay).'天前';
} elseif ($dDay > 7 && $dDay <= 30) {
return intval($dDay / 7).'周前';
} elseif ($dDay > 30) {
return intval($dDay / 30).'个月前';
}
//full: Y-m-d , H:i:s
} elseif ($type == 'full') {
return date('Y-m-d , H:i:s', $sTime);
} elseif ($type == 'ymd') {
return date('Y-m-d', $sTime);
} else {
if ($dTime < 60) {
return $dTime.'秒前';
} elseif ($dTime < 3600) {
return intval($dTime / 60).'分钟前';
} elseif ($dTime >= 3600 && $dDay == 0) {
return intval($dTime / 3600).'小时前';
} elseif ($dYear == 0) {
return date('Y-m-d H:i:s', $sTime);
} else {
return date('Y-m-d H:i:s', $sTime);
}
}
}
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- 笑不一定是开心,哭不一定是难过,年轻人的表达为什么离不开表情包?
- PHP数据库长连接mysql_pconnect的细节
- 如何在 Linux 上安装、配置 NTP 服务器和客户端?
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 关于浮动与清除浮动,你应该知道的
- 数组reduce方法的高级技巧
- Chrony:一个类 Unix 系统上 NTP 客户端和服务器替代品
- php7 读取php.ini[4]
- DB2 日期和时间的函数应用说明
- flex actionScript时间处理相加返回相加后的date