`

js时间比较,返回如几分钟前、几个月前、几年前

    博客分类:
  • js
阅读更多
//时间转换函数
	function transferDate(date) {//date的格式如:2011-08-01 12:13:55.1
		var inDate = new Date();//存放传入时间
		var curDate = new Date();//取得当前时间
		var yearAndTime = date.split(" "); //根据空格组成数组
		var fullYear = yearAndTime[0].split("-"); //根据'-'组成数组
		var time = yearAndTime[1].split(":"); //根据':'组成数组
		time[2] = time[2].split(".")[0];//修正正确的秒
		inDate.setFullYear(fullYear[0], fullYear[1] - 1, fullYear[2]);//设置传入时间的年月日
		inDate.setHours(time[0], time[1], time[2]);//设置传入时间的时分秒
		return doTransfer(inDate, curDate);
	}
	//执行转换操作
	function doTransfer(inDate, curDate) {
		var str = "";//用于存放返回的字符串
		inDate.setMilliseconds(0);//设置传入时间的毫秒为0
		curDate.setMilliseconds(0);//设置当前时间的毫秒为0
		var YEAR1 = 1000 * 60 * 60 * 24 * 365;//定义一年
		var YEAR2 = 1000 * 60 * 60 * 24 * 365 * 2;//定义两年
		var DAY = 1000 * 60 * 60 * 24;//定义一天
		var HOUR = 1000 * 60 * 60;//定义一个小时
		var MIN = 1000 * 60;//定义1分钟
		var diff = curDate - inDate;//取得当前时间与传入时间的时间差
		if ((diff - YEAR2) >= 0) {//判断是否是两年以上
			str += inDate.getFullYear() + "年";
			str += (inDate.getMonth() + 1) + "月" + inDate.getDate() + "日";
		} else {
			if ((diff - YEAR1) >= 0) {//判断是否是1年以上
				str += "1年前";
			} else {
				var subdaynum = -1;
				var workmonthnum = 0;
				for ( var i = inDate.getTime(); i <= curDate.getTime(); i = (i + DAY)) {
					var days = new Date(i);
					subdaynum++;
					if (days.getDate() == 1) {
						workmonthnum++;//记录当前时间与传入时间相差几个月
					}
				}
				if (subdaynum >= 31) {//相差天数是否大于31天
					str += workmonthnum + "个月前";
				} else {
					if (subdaynum >= 1) {//相差天数是否大于1天
						str += subdaynum + "天前";
					} else {
						var h = parseInt(diff / HOUR);
						if (h >= 1) {//相差时间是否大于1小时
							if ((curDate.getDate() - inDate.getDate()) == 1
									&& h > 12) {//是否跨日期相差超过12小时
								str += "1天前";
							} else {
								str += h + "小时前";
							}
						} else {
							var m = parseInt(diff / MIN);
							if (m >= 1) {//是否相差超过1分钟
								str += m + "分钟前";
							} else {
								str += "刚刚";
							}
						}
					}
				}
			}
		}
		return str;
	}

 

2
2
分享到:
评论

相关推荐

    微软JavaScript手册

    getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date ...

    javascript文档

    getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date ...

    JScript 语言参考

    getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date ...

    javascript入门笔记

    4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、文档对象模型(Document Object Model) - DOM 允许让 ...

    利用JS实现简单的日期选择插件

    首先是调用方法如下 //调用方法,后面回调函数返回的是当前选择的日期 calender('#calend').init(function(date){ this[removed] = date ...//举例:'yyyy年MM月dd日','yyyy-MM-dd','yyyy','MM','

    大名鼎鼎的IBM公司 Ajax 培训资料

    十八个月前,Ruby 成了关注的中心,不知道 Ruby 的程序员只能坐冷板凳了。今天,如果想跟上最新的技术时尚,那您的目标就是 Ajax。 但是,Ajax 不仅仅 是一种时尚,它是一种构建网站的强大方 法,而且不像学习一种...

    计算机应用技术(实用手册)

    这个项目可控制DRAM作用指令与读取/写入指令之间的延迟时间,有2,3,4几种选择。数值越小,性能越好。 DRAM RAS# Precharge: 这个项目是用来控制当预充电(precharge)指令送到DRAM之后,频率等待启动的等待...

    Sprint挑战高级React:Sprint挑战-高级React(Web:第3单元,Sprint 1)

    你会从服务器返回的数据将是女足世界杯的球员排名被搜索的兴趣从谷歌趋势,六月至七月2019年,全球- 。指示请仔细阅读这些说明。 在开始本次Sprint挑战赛之前,请确切了解预期的结果。 这是一项个人评估。 所有工作...

    Ext 开发指南 学习资料

    6.3. 脑袋上有几个标签的tabPanel 6.4. 让布局复杂一点儿 6.5. 向诸位介绍一下各具特色的布局 6.5.1. accordion就是QQ那样的伸缩菜单 6.5.2. CardLayout?其实就是Wizard啦。 6.5.3. 呼呼,TableLayout就是合并行,...

    caono佳能清零方法

    佳能清零方法 戒掉 保存于 2011年06月04日 21:45 字体:中▼ 小 中 大 转为日志 编辑 删除 II320的打印机,要先用手动清零,然后在用软件调整,才可一完全的清零.I550的是用手动清的.但是I320和I255.I355.I350等...

Global site tag (gtag.js) - Google Analytics