Edit in JSFiddle

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