我可以通过下面的 javascript 获取当前的月末日期。但是,我被困在设置条件上。 例如,如果输入的日期是当月的 21 日之后,则 lastDay 将是下个月的最后一天。
var date = new Date();
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
答案 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);
它们都基于相同的原则:根据当前日期设置要添加到 1
或 2
的月数。就可读性而言,我可能更喜欢变体 4。