javascript日期前一个月的最后一天

问题描述:

比方说,我有3个变量是这样的:javascript日期前一个月的最后一天

var Month = 8; // in reality, it's a parameter provided by some user input 
var Year = 2011; // same here 
var FirstDay = new Date(Year, Month, 1); 

现在我想这个月的一个变量的第一天前,有一天的价值。我这样做:

var LastDayPrevMonth = (FirstDay.getDate() - 1); 

按计划它不工作。做这件事的权利是什么?

谢谢。

var LastDayPrevMonth = new Date(Year, Month, 0).getDate(); 
+0

此函数返回日期的一天,但不返回日期本身:31,28,31 .. – frenchie

+1

然后,只需删除'.getDate()'。 getDate返回月份的一天。它看起来就是你想要的问题。 – Will

创建一个新的Date对象,并将其他日期强制转换为自Unix epoch以来的毫秒数,然后减去一整天(以毫秒为单位)。

var LastDayPrevMonth = new Date(FirstDay - 864e5); 

jsFiddle

+0

它说什么。我删除了加号。常数等于什么?几秒钟? – frenchie

+0

@renchie:一天中的毫秒数。是的,当使用'-'作为操作符时,你不需要'+' – alex

+0

@frenchie - 我认为William Van Rensselaer的答案更好 - 只需将日期设置为零,即可获得上个月的最后一天。 – RobG

var LastDayPrevMonth = new Date(FirstDay); 
LastDayPrevMonth.setHours(FirstDay.getHours()-24); 

var FirstDay = new Date(Year, Month, 1); 
var lastMonth = new Date(FirstDay); 
lastMonth.setDate(-1); 
alert(lastMonth); 

请记住,8九月,在JavaScript中不AUG。 :)

如果您需要根据今天的日期来计算这个(您想上个月的最后一天),以下应该有所帮助。

如果你只在乎月/日/年,这是我能想到的最简单和最快的:

var d = new Date(); d.setDate(0); 
console.log(d); 

如果你想在上月的最后一天的午夜,然后:

var d = new Date(); d.setDate(0); d.setHours(0,0,0,0); 
console.log(d); 

如果你想知道前一个月的最后一天,根据所提供的年/月:

var year = 2016, month = 11; 
var d = new Date(year, (month - 1)); d.setDate(0); d.setHours(0,0,0,0); 
console.log(d); 

在运行任何上述情况,得到YYYY-M-d格式后:

var str = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); 
console.log(str); 

要查看其他可用的方法,并看看他们做什么,你可以read the docs