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


Posted in PHP onSeptember 25, 2012

废话不多说直接上代码。
PHP FOR Smarty

* 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个函数实现
/** 
* 字符串填充 
* @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,2,'0','left'); 
hour = strPad(hour,2,'0','left'); 
minute = strPad(minute,2,'0','left'); 
second = strPad(second,2,'0','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; 
}
PHP 相关文章推荐
php中目录,文件操作详谈
Mar 19 PHP
php 远程图片保存到本地的函数类
Dec 08 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
php实现字符串反转输出的方法
Mar 14 PHP
基础的WordPress插件制作教程
Nov 24 PHP
Joomla开启SEF的方法
May 04 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP判断是否微信访问的方法示例
Mar 27 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 #PHP
PHP获取网址的顶级域名函数代码
Sep 24 #PHP
ThinkPHP关联模型操作实例分析
Sep 23 #PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 #PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 #PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 #PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 #PHP
You might like
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
输入N,打印N*N矩阵
2012/02/20 面试题
综合办公室主任职责
2013/12/16 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
村委会贫困证明
2014/01/14 职场文书
领导失职检讨书
2014/02/24 职场文书
开工仪式策划方案
2014/05/23 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
队名及霸气口号大全
2015/12/25 职场文书
股东协议书范本2016
2016/03/21 职场文书