如何在Javascript或JQuery中获取上个月的最后一天

我有以下代码来获取当天:

var month=new Array(12); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; var d = new Date(); var curr_date; if (d.getDate() == 1) { curr_date = d.getDate(); } else { curr_date = d.getDate() - 1; } var curr_month = d.getMonth() + 1; //months are zero based var curr_year = d.getFullYear(); var message_day = curr_year + "_" + curr_month + "_" + curr_date; var sql_day = month[curr_month - 1].substring(0,3) + curr_date.toString() + curr_year.toString(); if (curr_date == "1") { document.write(sql_day + " " + message_day); } 

这对于获得当天来说非常好,但是现在我需要在上个月的最后一天才能获得新月的开始。

现在这会产生:

 Feb12012 2012_2_1 

但我需要的输出是:

 Jan312012 2012_1_31 

谢谢

 var d=new Date(); // current date d.setDate(1); // going to 1st of the month d.setHours(-1); // going to last hour before this date even started. 

现在d包含上个月的最后一个日期。 d.getMonth()d.getDate()将反映它。

这应该适用于包装c time.h任何日期api。 看到这个

这对我很有用:

 var date = new Date(); date.setDate(0); 

date现在包含上个月的最后一天。

只需从日期中减去一个:

  var today = new Date(); var yesterday = new Date().setDate(today.getDate() - 1); 

如果“日期”属性(日期)为1,则将其设置为零将为您提供表示上个月最后一天的日期。 你的代码已经非常接近了; 你可以构造一个新的Date实例:

  if (d.getDate() === 1) curr_date = new Date().setDate(0).getDate(); 

实际上你甚至不需要“if”语句:

  curr_date = new Date().setDate( d.getDate() - 1 ).getDate(); 

这对每个月的任何一天都有用。