要求显示某个时间的格式如下:
12:34 昨天 12:34 前天 20:10 本周一 21:15 上周二 10:21 3月21日 21:14 2010年10月21日 19:32
通过JS输出可编码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TimeTest4</title>
<!--<script src="http://www.cnblogs.com/js/jquery-1.6.1-vsdoc.js" type="text/javascript"></script>-->
<script src="http://www.cnblogs.com/js/jquery-1.6.1.js" type="text/javascript"></script>
<script type="text/javascript">
/*------------------------------------*\
CJB: Extentions
\*------------------------------------*/
Date.prototype.format = function (format) {
/*
* eg:format="YYYY-MM-dd hh:mm:ss";
*/
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
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;
};
</script>
<script type="text/javascript">
/*------------------------------------*\
CJB: Timeline
\*------------------------------------*/
$(function () {
for (var i = 0; i < 30; i++) {
var mil = new Date().getTime() - 86400000 * i;
$('<p />').html(txtOfTimeline(mil)).appendTo($('#msgbox'));
}
});
function txtOfTimeline(millisecond) {
var now = new Date();
var dt = new Date(millisecond);
//本周第一天
var WeekFirstDay = new Date(startDay(new Date(now - (now.getDay() - 1) * 86400000)));
debug("本周第一天: " + WeekFirstDay.format('yyyy-MM-dd hh:mm:ss S'));
//上周第一天
var PreviousFirstWeekDay = new Date(startDay(new Date(WeekFirstDay - 86400000 * 7)));
debug("上周第一天: " + PreviousFirstWeekDay.format('yyyy-MM-dd hh:mm:ss S'));
//本月第一天
var MonthFirstDay = new Date(startDay(new Date(now.getFullYear(), now.getMonth(), 1)));
debug("本月第一天: " + MonthFirstDay.format('yyyy-MM-dd hh:mm:ss S'));
//今天
var Today = new Date(startDay(now));
debug("今天: " + Today.format('yyyy-MM-dd hh:mm:ss S'));
//昨天
var Yesterday = new Date(startDay(new Date(now - 86400000)));
debug("昨天: " + Yesterday.format('yyyy-MM-dd hh:mm:ss S'));
//前天
var Beforeyesterday = new Date(startDay(new Date(now - 86400000 * 2)));
debug("昨天: " + Beforeyesterday.format('yyyy-MM-dd hh:mm:ss S'));
//日期判断
if (dt > Today) {
//12:34
return dt.format('hh:mm');
} else if (dt > Yesterday) {
return dt.format('昨天 hh:mm');
} else if (dt > Beforeyesterday) {
return dt.format('前天 hh:mm');
} else if (dt > WeekFirstDay) {
switch (dt.getDay()) {
case 1:
return dt.format('本周一 hh:mm');
break;
case 2:
return dt.format('本周二 hh:mm');
break;
case 3:
return dt.format('本周三 hh:mm');
break;
case 4:
return dt.format('本周四 hh:mm');
break;
case 5:
return dt.format('本周五 hh:mm');
break;
case 6:
return dt.format('本周六 hh:mm');
break;
case 0:
return dt.format('本周日 hh:mm');
break;
default:
return dt.format('MM月dd日 hh:mm');
break;
}
} else if (dt > PreviousFirstWeekDay) {
switch (dt.getDay()) {
case 1:
return dt.format('上周一 hh:mm');
break;
case 2:
return dt.format('上周二 hh:mm');
break;
case 3:
return dt.format('上周三 hh:mm');
break;
case 4:
return dt.format('上周四 hh:mm');
break;
case 5:
return dt.format('上周五 hh:mm');
break;
case 6:
return dt.format('上周六 hh:mm');
break;
case 0:
return dt.format('上周日 hh:mm');
break;
default:
return dt.format('MM月dd日 hh:mm');
break;
}
} else if (dt > MonthFirstDay) {
return dt.format('MM月dd日 hh:mm');
}
return dt.format('yyyy年MM月dd日 hh:mm');
}
function startDay(startTime) {
return Date.parse(startTime.getFullYear() + "-" + (startTime.getMonth() + 1) + "-" + startTime.getDate() + " 00:00:00");
}
function endDay(endTime) {
return Date.parse(endTime.getFullYear() + "-" + (endTime.getMonth() + 1) + "-" + endTime.getDate() + " 23:59:59");
}
function debug(txt) {
if (window.console && window.console.log)
window.console.log('debug: ' + txt);
}
</script>
</head>
<body>
<div id="msgbox">
</div>
</body>
</html>