我正在制作一个程序,我得到这样的日期:
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");
}
计算有效?非常感谢提前!
答案 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这样的库。