条件适用时如何获取当月的最后日期和下个月的日期

时间:2020-12-30 09:32:15

标签: javascript

我可以通过下面的 javascript 获取当前的月末日期。但是,我被困在设置条件上。 例如,如果输入的日期是当月的 21 日之后,则 lastDay 将是下个月的最后一天。

var date = new Date();

var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);

2 个答案:

答案 0 :(得分:0)

var date = new Date();
var condition = date.getDate() > 21;
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1 + (condition ? 1 : 0), 0);

如果当前日期在 21 号之后,则返回下月末,否则返回当前月末。

答案 1 :(得分:0)

有各种可能性。例如

var date = new Date();
var lastday;
if (date.getDate() > 21)
  lastday = new Date(date.getFullYear(), date.getMonth() + 2, 0);
else
  lastday = new Date(date.getFullYear(), date.getMonth() + 1, 0);

或使用三元运算符进行赋值

var date = new Date();
var lastday = date.getDate() > 21 
  ? new Date(date.getFullYear(), date.getMonth() + 2, 0)
  : new Date(date.getFullYear(), date.getMonth() + 1, 0);

或预先计算monthOffset

var date = new Date();
var monthOffset = 1;
if (date.getDate() > 21) 
  monthOffset = 2;
var lastday =  new Date(date.getFullYear(), date.getMonth() + monthOffset, 0);

或使用三元运算符预先计算月份偏移

var date = new Date();
var monthOffset = date.getDate() > 21 ? 2: 1
var lastday =  new Date(date.getFullYear(), date.getMonth() + monthOffset, 0);

或在没有附加变量的情况下内联计算monthOffset

var date = new Date();
var lastday =  new Date(date.getFullYear(), date.getMonth() + (date.getDate() > 21 ? 2 : 1), 0);

它们都基于相同的原则:根据当前日期设置要添加到 12 的月数。就可读性而言,我可能更喜欢变体 4。

相关问题