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
的对象的时候没有注意以下两点:
-
getMonth()
的下标是0,不是1。也就是说,返回了0,是正确的,0代表1月。 -
getDay()
返回的是周几,getDate()
返回的才是几号。
所以上述方法改写为:
var timestamp = 1546927200000; var newDate = new Date(); newDate.setTime(timestamp); var date = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate(); console.log(date);
即得到我们想要的结果
原文地址:https://segmentfault.com/a/1190000020184950