废话不多说直接上代码。 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; }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|