要求:
一小时以内:
小于等于15分钟: 显示刚刚,例如:甘冈
大于15分钟小于1小时,显示具体的分钟差值,例如:23分钟以前
大于等于一小时,且小于一天以内:
大于等于1天,且小于2天,则显示昨天,例如:昨天
大于等于2天,且小于1周,则显示几天前,例如:3天前。
超过一周的情况,就显示具体的日期,例如:2016-06-20
css
span{ color: #999; font-size: 12px; }
js
time = gg.util.formatDate(list[i].createdAt); function formatDate(time){ var ts=new Date().getTime()-time; if(ts<900000){ return '剛剛'; }else if(ts<3600000){ return parseInt(ts/60000)+'分鐘前'; }else if(ts<86400000){ return parseInt(ts/3600000)+'小時前'; }else if(ts<172800000){ return '昨天'; }else if(ts<604800000){ return parseInt(ts/86400000)+'天前'; }else{ return getFormatDateByLong(time, "yyyy-MM-dd"); } } Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S": this.getMilliseconds() } if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return format; } /** *转换日期对象为日期字符串 * @param date 日期对象 * @param isFull 是否为完整的日期数据, * 为true时, 格式如"2000-03-05 01:05:04" * 为false时, 格式如 "2000-03-05" * @return 符合要求的日期字符串 */ function getSmpFormatDate(date, isFull) { var pattern = ""; if (isFull == true || isFull == undefined) { pattern = "yyyy-MM-dd hh:mm:ss"; } else { pattern = "yyyy-MM-dd"; } return getFormatDate(date, pattern); } /** *转换当前日期对象为日期字符串 * @param date 日期对象 * @param isFull 是否为完整的日期数据, * 为true时, 格式如"2000-03-05 01:05:04" * 为false时, 格式如 "2000-03-05" * @return 符合要求的日期字符串 */ function getSmpFormatNowDate(isFull) { return getSmpFormatDate(new Date(), isFull); } /** *转换long值为日期字符串 * @param l long值 * @param isFull 是否为完整的日期数据, * 为true时, 格式如"2000-03-05 01:05:04" * 为false时, 格式如 "2000-03-05" * @return 符合要求的日期字符串 */ function getSmpFormatDateByLong(l, isFull) { return getSmpFormatDate(new Date(l), isFull); } /** *转换long值为日期字符串 * @param l long值 * @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss * @return 符合要求的日期字符串 */ function getFormatDateByLong(l, pattern) { return getFormatDate(new Date(l), pattern); } /** *转换日期对象为日期字符串 * @param l long值 * @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss * @return 符合要求的日期字符串 */ function getFormatDate(date, pattern) { if (date == undefined) { date = new Date(); } if (pattern == undefined) { pattern = "yyyy-MM-dd hh:mm:ss"; } return date.format(pattern); } //alert(getSmpFormatDate(new Date(1279849429000), true)); //alert(getSmpFormatDate(new Date(1279849429000),false)); //alert(getSmpFormatDateByLong(1279829423000, true)); //alert(getSmpFormatDateByLong(1279829423000,false)); //alert(getFormatDateByLong(1279829423000, "yyyy-MM")); //alert(getFormatDate(new Date(1279829423000), "yy-MM")); //alert(getFormatDateByLong(1279849429000, "yyyy-MM hh:mm"));
html = ""; html += "<span class='pull-right'>"+time+"</span>";