这取决于您对“容易”的标准。这是一个根据需要执行的简单函数,它是 5 行工作代码,可以减少到 4 行,但如果这样做会失去一点清晰度:
function lastDayInMonth(dayName, month, year) {
// Day index map - modify to suit whatever you want to pass to the function
var dayNums = {Sunday: 0, Monday:1, Tuesday:2, Wednesday:3,
Thursday:4, Friday:5, Saturday:6};
// Create a date object for last day of month
var d = new Date(year, month, 0);
// Get day index, make Sunday 7 (could be combined with following line)
var day = d.getDay() || 7;
// Adjust to required day
d.setDate(d.getDate() - (7 - dayNums[dayName] + day) % 7);
return d;
}
您可以将映射更改为任何内容,只需确定要传递给可以映射到 ECMAScript 日期编号的函数(日期名称、缩写、索引等)的内容。
编辑
因此,如果总是想显示该月的最后一个星期三或下个月(如果已过):
function showLastWed() {
var now = new Date();
var lastWedOfThisMonth = lastDayInMonth('Wednesday', now.getMonth()+1, now.getFullYear());
if (now.getDate() > lastWedOfThisMonth().getDate()) {
return lastDayInMonth('Wednesday', now.getMonth()+2, now.getFullYear());
} else {
return lastWedOfThisMonth;
}
}
请注意,该函数需要日历月份编号(Jan = 1、Feb = 2 等),而getMonth方法返回 ECMAScript 月份索引(Jan = 0、Feb = 1 等),因此+1
and+2
获取日历月份数字。