如何在JavaScript中正确构造“日期”对象?

时间:2015-07-10 07:04:34

标签: javascript

我在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 __”的“无效日期”?

6 个答案:

答案 0 :(得分:5)

这一切都是这样的,因为这就是Date object的工作方式 你提到的结果都不正确。

Year

  

getYear()方法返回年份减去1900;

因此,对于2015,它会返回2015 - 1900,即115。但是,不推荐使用getYear,而是使用getFullYear。 (此 返回2015

Month

  

getMonth()方法根据当地时间返回指定日期的月份,作为从零开始的值(其中零表示一年中的第一个月)。

因此,1月份为0,2月份为1等。

Day

  

getDay()方法根据当地时间返回指定日期的星期几,其中0代表星期日。

与几个月基本相同的故事,它们都是零基础的 如果您想获得每月的日期,请使用 getDate()

最后,原型__proto__确实是你不应该触及的东西。它只不过是Date对象的骨架,Date对象将具有正确的值。

答案 1 :(得分:2)

  • 原型本身是无效的日期。您不应该使用原型日期,因为它是每个日期,没有日期。每个具体日期对象都会使用正确的值覆盖字段。

  • getYear给你自1900年以来的年数。现在是自1900年以来的第115年,这是正确的。 getFullYear可能更有用。

  • getMonth为您提供1月为0的月份。 6表示七月。它也是正确的。

  • getDay为您提供星期几,星期日为05星期五,这也是正确的。您可能想要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