Javascript 日期对象 - JSFiddle 中的不同值

Javascript Date Object - Different Value in JSFiddle

这个我觉得比较简单

为什么我在 JSFiddle (new Date(1451606399999) 中 运行 以下代码时得到 2015-11-04,但是当我在浏览器控制台中 运行 相同的代码时,我得到2015-12-31(这是我期望的值)。

我原以为在任何一种情况下,时区都与客户端上的代码 运行ning 相同,为什么时区会使日期相差超过一个月?

function test()
{
    var date = new Date(1451606399999);
    var year = date.getFullYear();
    var month = date.getMonth();
    var day = date.getDay();
    var hours = date.getHours();
    var minutes = "0" + date.getMinutes();
    var seconds = "0" + date.getSeconds();

    var formattedTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

    document.getElementById("myDiv").innerHTML = formattedTime;
}

JSFiddle with code

令人困惑的是,date.getMonth()是以0为基础的,也就是说0是一月,所以应该是month = date.getMonth()+1。同样令人困惑的是 date.getDay() 实际上是 returns 星期几(0 是星期日,1 是星期一......等等)。您要查找的函数是 date.getDate()

function test(){
    var date = new Date(1451606399999);
    var year = date.getFullYear();
    var month = date.getMonth()+1;
    var day = date.getDate();
    var hours = date.getHours();
    var minutes = "0" + date.getMinutes();
    var seconds = "0" + date.getSeconds();

    var formattedTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
    console.log(date);
    document.getElementById("myDiv").innerHTML = formattedTime;
}