将时间以距今多久的形式表示,PHP,js双版本

前端之家收集整理的这篇文章主要介绍了将时间以距今多久的形式表示,PHP,js双版本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

废话不多说直接上代码
PHP FOR Smarty
<div class="codetitle"><a style="CURSOR: pointer" data="10544" class="copybut" id="copybut10544" onclick="doCopy('code10544')"> 代码如下:

<div class="codebody" id="code10544">
Name: time_ago
Purpose: 将时间戳专为距当前时间的表现形式
1分钟内按秒
1小时内按分钟显示
1天内按时分显示
3天内以昨天,前天显示
超过3天显示具体日期

@author Peter Pan
@param int $time input int
*/
function smarty_modifier_time_ago($time) {
$time_deff = time() - $time;
$retrun = '';
if ($time_deff >= 259200) {
$retrun = date('Y-m-d H:i',$time);
} else if ($time_deff >= 172800) {
$retrun = "前天 " . date('H:i',$time);
} else if ($time_deff >= 86400) {
$retrun = "昨天" . date('H:i',$time);
} else if ($time_deff >= 3600) {
$hour = intval($time_deff / 3600);
$minute = intval(($time_deff % 3600) / 60);
$retrun = $hour . '小时';
if ($minute > 0) {
$retrun .= $minute . '分钟';
}
$retrun .= '前';
} else if ($time_deff >= 60) {
$minute = intval($time_deff / 60);
$second = $time_deff % 60;
$retrun = $minute . '分';
if ($second > 0) {
$retrun .= $second . '秒';
}
$retrun .= '前';
}else{
$retrun = $time_deff.'秒前';
}
return $retrun;
}

Javascript
JS比较复杂一点,分为3个函数实现
<div class="codetitle"><a style="CURSOR: pointer" data="2259" class="copybut" id="copybut2259" onclick="doCopy('code2259')"> 代码如下:
<div class="codebody" id="code2259">
/
字符串填充
@param string str 要进行填充的字符串
@param int len 目标字符串长度
@param str chr 用于填充的字符 默认为空格
@param str dir 填充位置 left|right|both 默认为right
/
function strPad(str,len,chr,dir){
str = str.toString();
len = (typeof len == 'number') ? len : 0;
chr = (typeof chr == 'string') ? chr : ' ';
dir = (/left|right|both/i).test(dir) ? dir : 'right';
var repeat = function(c,l) {
var repeat = '';
while (repeat.length < l) {
repeat += c;
}
return repeat.substr(0,l);
}
var diff = len - str.length;
if (diff > 0) {
switch (dir) {
case 'left':
str = '' + repeat(chr,diff) + str;
break;
case 'both':
var half = repeat(chr,Math.ceil(diff / 2));
str = (half + str + half).substr(1,len);
break;
default:
str = '' + str + repeat(chr,diff);
}
}
return str;
}
/

格式化日期
类似PHP Date函数,传入Unix 时间戳(秒级)返回指定格式
格式(不区分大小写):
y 表示4位年份
m 表示2位月份
d 表示2位日
h 表示2位时
i 表示2位分
s 表示2位秒
/
function formatDate(format,timestamp) {
var date = new Date(parseInt(timestamp) * 1000);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
month = strPad(month,2,'0','left');
day = strPad(day,'left');
hour = strPad(hour,'left');
minute = strPad(minute,'left');
second = strPad(second,'left');
format = format.replace(/y/gi,year);
format = format.replace(/m/gi,month);
format = format.replace(/d/gi,day);
format = format.replace(/h/gi,hour);
format = format.replace(/i/gi,minute);
format = format.replace(/s/gi,second);
return format;
}
function timeAgo(time) {
var nowTime = Date.parse(new Date()) / 1000;
var time_deff = nowTime - time;
retrun = '';
if (time_deff >= 259200) {
retrun = formatDate('Y-m-d H:i',time);
} else if (time_deff >= 172800) {
retrun = "前天 " + formatDate('H:i',time);
} else if (time_deff >= 86400) {
retrun = "昨天" + formatDate('H:i',time);
} else if (time_deff >= 3600) {
hour = parseInt(time_deff / 3600);
minute = parseInt((time_deff % 3600) / 60);
retrun = hour + '小时';
if (minute > 0) {
retrun += minute + '分钟';
}
retrun += '前';
} else if (time_deff >= 60) {
minute = parseInt($time_deff / 60);
second = time_deff % 60;
retrun = minute + '分';
if (second > 0) {
retrun += second + '秒';
}
retrun += '前';
}else{
retrun = time_deff +'秒前';
}
return retrun;
}

原文链接:https://www.f2er.com/php/26967.html

猜你在找的PHP相关文章