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;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值