function logMsg(str, noBreak) {
var msg = document.getElementById('message');
msg.innerHTML += str;
if (!noBreak) // if noBreak is asigned a value (any value), <br /> won't be output
msg.innerHTML += '<br />';
}
function dateReviver(key, value) {
if (typeof value === 'string') {
var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.(\d*))?)Z$/.exec(value);
if (a) return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
}
return value;
}
function DateReviver(key, value) {
if (typeof value === 'string') {
var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.(\d*))?)Z$/.exec(value);
if (a) return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6], +a[7]));
}
return value;
}
var dt = new Date();
console.clear();
logMsg('dt = ' + dt);
var dtJson = JSON.stringify(dt);
logMsg('dtJson = ' + dtJson);
var dtParsed = JSON.parse(dtJson, DateReviver);
//var dtParsed = JSON.parse(dtJson, dateReviver);
logMsg('dtParsed = ' + dtParsed);
logMsg('Is dt == dtParsed ? ' + (dt === dtParsed));
logMsg('Is dt.getTime() == dtParsed.getTime() ? ' + (dt.getTime() === dtParsed.getTime()));
logMsg('dt.getTime() = ' + dt.getTime())
logMsg('dtParsed.getTime() = ' + dtParsed.getTime())
程式說明: <a href="http://2sh.tw/2013/05/javascript.html" target="_blank">JavaScript 中的日期比較問題</a>
<hr />
<div id="message" />
body {
font-family: Verdana, Arial;
font-size: 1.1em;
}