2013-05-17 68 views
0

因此,我正在使用JavaScript日历来反映当前月份以及上个月的最后几天以及下个月的前几天。我遇到了一个我无法弄清楚我生活的问题。Javascript日期类中自动增加年份

我有以下

var today = new Date(); 
var lastMonthDays = new Date(today.getFullYear(), today.getMonth() - 1, 0).getDate(); 

这应该分别返回上个月的最后一天,但它让我代表31天,然而,在四月只有30天值31。所以我最好的猜测是它给了我当前的几个月的天数。这不应该给我30吗?我已经在网上查看了其他示例,从它看起来像什么,我现在应该工作得很好。

回答

2

没有,它给你31因为3月有31天。试试这个:

var lastMonthDays = new Date(today.getFullYear(), today.getMonth(), 0).getDate(); 

0日期字段实际上意味着“本月1日之前的一天”。

+0

好的。这就说得通了。所以我的下一个问题是,我怎么会在这个月的最后一天?现在,我使用相同的确切代码来获得这个月的最后时间,现在我看到它是不正确的。我应该做'新日期(today.getFullYear(),today.getMonth()+,0).getDate();' – user0000001

+0

是的,只是得到下个月的零日('today.getMonth()+ 1') 。 – Pointy

+0

谢谢!干杯 – user0000001

2

today.getMonth()给出了一个零索引的月份。即

扬:0, 月:1, 月:2, ...

因此,你不需要-1得到比上月

var today = new Date(); 
var lastMonthDays = new Date(today.getFullYear(), today.getMonth(), 0).getDate(); 
+1

你说得对,不需要减去一个,但这是因为基于1的日期而不是基于0的月份。 – Pointy

+0

你是对的 - 我忘了你也将月份作为一个零指数的月份(显然!),所以索引是没有关联的。你的回答是正确的。 –