我在chrome console中运行下一个简单的JS代码:
var d = new Date();
console.log(d.__proto__);
console.log(d.getYear());
console.log(d.getMonth());
console.log(d.getDay());
获得下一个奇怪的输出:
Invalid Date
115
6
5
今天是2015年7月10日。那么为什么年,月和日不正确以及为什么“__proto __”的“无效日期”?
答案 0 :(得分:5)
这一切都是这样的,因为这就是Date
object的工作方式
你提到的结果都不正确。
Year:
getYear()
方法返回年份减去1900;
因此,对于2015
,它会返回2015 - 1900
,即115
。但是,不推荐使用getYear
,而是使用getFullYear
。 (此 返回2015
)
getMonth()
方法根据当地时间返回指定日期的月份,作为从零开始的值(其中零表示一年中的第一个月)。
因此,1月份为0
,2月份为1
等。
Day:
getDay()
方法根据当地时间返回指定日期的星期几,其中0
代表星期日。
与几个月基本相同的故事,它们都是零基础的
如果您想获得每月的日期,请使用 getDate()
最后,原型__proto__
确实是你不应该触及的东西。它只不过是Date
对象的骨架,Date
对象将具有正确的值。
答案 1 :(得分:2)
原型本身是无效的日期。您不应该使用原型日期,因为它是每个日期,没有日期。每个具体日期对象都会使用正确的值覆盖字段。
getYear
给你自1900年以来的年数。现在是自1900年以来的第115年,这是正确的。 getFullYear
可能更有用。
getMonth
为您提供1月为0
的月份。 6
表示七月。它也是正确的。
getDay
为您提供星期几,星期日为0
。 5
星期五,这也是正确的。您可能想要getDate
。
答案 2 :(得分:0)
d.getFullYear(),month为0,d.getDay()为Day-Of-Week,0 =基于星期日,5为星期五。你想要d.getDate()。
答案 3 :(得分:0)
尝试getDate()
而非getDay()
和getFullYear()
。
至于月份,月份从0开始(jan为0),因此7月份为6而不是7。
答案 4 :(得分:0)
1)getYear
已过时,请改用getFullYear()
。
2)getMonth
返回0-11之间的值,因此显示的不是7(7-1)。
3)getDay
返回0-6之间的值
答案 5 :(得分:-1)
使用d.getFullYear()
代替d.getYear()
var d = new Date();
console.log(d)
// Fri Jul 10 2015 12:40:09 GMT+0530 (India Standard Time)
console.log(d.getFullYear())
// 2015
console.log(d.getDay())
5 // 5 is the number of the day so it is correct as 0 represents Sunday
console.log(d.getDate())
// 10