javascript中格式化时间戳 getMonth() 返回了 0

在JS编程中,时间戳与日期间的转换应该是很常用了,举个简单的例子:

var timestamp = 1546927200000;  // 2019年1月8号
var newDate = new Date();
newDate.setTime(timestamp);
var date = newDate.getFullYear() + '-' + newDate.getMonth() + '-' + newDate.getDay();
console.log(date);

最终结果却是:

我们打断点看一下发生了什么?

debug我们发现,日期并没有错。是2019年1月8号星期二,那么为什么返回的却是2019-0-2。原因是由于,我们在使用Date的对象的时候没有注意以下两点:

  1. getMonth()的下标是0,不是1。也就是说,返回了0,是正确的,0代表1月。
  2. getDay()返回的是周几,getDate()返回的才是几号。

所以上述方法改写为:


        var timestamp = 1546927200000;
        var newDate = new Date();
        newDate.setTime(timestamp);
        var date = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();
        console.log(date);

即得到我们想要的结果

你可能感兴趣的:(javascript)