如何在javascript中计算这个月和下个月的时间?

时间:2018-05-16 17:30:16

标签: javascript

我正在制作一个程序,我得到这样的日期:

  

2016-08-31T00:00:00

所以我的目标是进行3次比较:

1.-需要显示"到期" 如果任命已经落实。

2.-需要显示"下个月到期" 如果下个月的任命到期。

3.-需要显示"本月到期" 如果这个月的任命到期。

到目前为止,我能够显示消息"到期"通过这样做:

SELECT p.prodname, c.processor
FROM sale s
   JOIN product p USING (product_id)
   LEFT JOIN computer c USING (product_id)
WHERE sale_id = 42;

那么我怎样才能使shutdown()var someTime = "2016-08-31T00:00:00"; if(new Date(someTime).getTime() < new Date()){ console.log("Due"); } 计算有效?非常感谢提前!

2 个答案:

答案 0 :(得分:0)

为什么不这样:

function appointment(srcDate) {
    console.log('');
    console.log(srcDate);

  var today = new Date();
  var todayNextMonth = today.getMonth() + 1;
  todayNextMonth = todayNextMonth > 11 ? 0 : todayNextMonth;

  if (srcDate < today) {
    console.log("Due");
  } else if (srcDate.getMonth() === today.getMonth()) {
    console.log("Due this month");
  } else if (srcDate.getMonth() === todayNextMonth) {
    console.log("Due next month");
  }
}

appointment(new Date("2016-08-31T00:00:00"));
appointment(new Date("2018-05-29T00:00:00"));
appointment(new Date("2018-06-15T00:00:00"));

请参阅jsfiddle

使用功能,更容易测试。

请记住,getMonth()为零索引,因此januari等于0,而不是等等。

不确定为什么使用getTime()与Date对象进行比较,可以省略getTime()。但请记住,如果约会日期是将来的5分钟,它将显示“本月到期”#39;您必须添加额外的逻辑以显示“今天到期”和“#39;如果你需要的话。

答案 1 :(得分:-1)

您可以通过以下方式获取当月:

const today = new Date();
const month = today.getMonth();

从技术上讲,您可以添加1以获得下个月:const nextMonth = month + 1;

但要明白,如果日期类似于1月31日(那么上面会给你3月作为下个月),这样做可能会遇到问题。

有关详细信息,请参阅此问题和答案:Javascript Date: next month

或者,如果您在日期方面做了很多工作,可以使用像moment.js这样的库。