//时间转换函数 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; }