JSON.stringify() 后日期少一天的原因即处理方式

JSON.stringify 转换 Date 不正确的原因:Date.toJSON() 返回的是 ISO-8601 标准: YYYY-MM-DDTHH:mm:ss.sssZ 和北京时间差 8 个时区

解决方案

重写 Date.toJSON()方法

Date.prototype.toJSON = function () {
    return format(this)
}

function format(d) {
    var y = d.getFullYear()
    var m = d.getMonth() + 1
    if (m < 10) {
        m = '0' + m
    }
    var day = d.getDate()
    if (day < 10) {
        day = '0' + day
    }
    var h = d.getHours()
    if (h < 10) {
        h = '0' + h
    }
    var M = d.getMinutes()
    if (M < 10) {
        M = '0' + M
    }
    var s = d.getSeconds()
    if (s < 10) {
        s = '0' + s
    }

    // ? 注意不要使用'-'会有ios new Date(d)问题
    return y + '/' + m + '/' + day + ' ' + h + ':' + M + ':' + s
}
贡献者: mankueng