setDate不返回Javascript的最后一天

时间:2016-10-31 13:37:27

标签: javascript jquery datetime

我期待31,因为这个月10月有31天,我的代码中哪部分错了?

function lastDayOfMonth(given_month) {
  var d = new Date();
  d.setDate(0);
  d.setMonth(given_month);
  return d.toISOString();
}

console.log(lastDayOfMonth(given_month))
  

2016-10-30T13:16:14.227Z

3 个答案:

答案 0 :(得分:1)

d.setDate(0);

将日期设置为上个月的最后一天。即如果您在十月份运行此脚本,则日期将设置为9月30日。

之后你运行

d.setMonth(given_month);

设置月份,但保留月份的日期。我假设given_month是9(即10月),所以这将导致10月30日。

有关详细信息,请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate

答案 1 :(得分:1)

given_month = 10;

function lastDayOfMonth(given_month) {
  var d = new Date();
  d.setDate(15);
  d.setMonth(given_month);
  d.setDate(0)
  return d.toISOString();
}

console.log(lastDayOfMonth(given_month)) // 2016-10-30T13:16:14.227Z

Expl:今天是31,所以,新的日期设置为31天;当你将月份设置为10(11月)时,白天仍然是31天,但11月只有30天,因此错误。

答案 2 :(得分:0)

setDate(0)将产生上个月的最后一天