获取本月最后一天¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a4mqg1ptck
脚本说明¶
该脚本用于获取当前月份的最后一天。在MyApps平台中,可以通过Date对象计算获取本月的最后一天日期。
常见实现方式¶
方式1:使用Date对象获取本月最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
// 获取下个月的第一天,然后减1天,得到本月的最后一天
var lastDay = new Date(year, month, 0);
return format(lastDay, "yyyy-MM-dd");
})();
方式2:获取本月最后一天的日期数¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
// 获取下个月的第一天,然后减1天
var lastDay = new Date(year, month, 0);
return lastDay.getDate(); // 返回日期数,如:31
})();
方式3:获取指定月份的最后一天¶
(function(){
var year = 2024;
var month = 2; // 2月
// 获取下个月的第一天,然后减1天
var lastDay = new Date(year, month, 0);
return format(lastDay, "yyyy-MM-dd");
})();
方式4:使用Java Calendar获取本月最后一天¶
(function(){
var Calendar = Packages.java.util.Calendar;
var SimpleDateFormat = Packages.java.text.SimpleDateFormat;
var calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
var sdf = new SimpleDateFormat("yyyy-MM-dd");
var result = sdf.format(calendar.getTime());
return result;
})();
扩展示例¶
示例1:获取本月最后一天并格式化¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var formatted = format(lastDay, "yyyy-MM-dd");
var dayNumber = lastDay.getDate();
return "本月最后一天: " + formatted + " (第" + dayNumber + "天)";
})();
示例2:获取本月第一天和最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var firstDay = new Date(year, month, 1);
var lastDay = new Date(year, month + 1, 0);
var range = {
firstDay: format(firstDay, "yyyy-MM-dd"),
lastDay: format(lastDay, "yyyy-MM-dd")
};
return JSON.stringify(range);
})();
示例3:判断今天是否是本月最后一天¶
(function(){
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var todayDate = today.getDate();
var lastDayDate = lastDay.getDate();
if(todayDate == lastDayDate){
return true;
}else{
return false;
}
})();
示例4:获取本月剩余天数¶
(function(){
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var todayDate = today.getDate();
var lastDayDate = lastDay.getDate();
var remainingDays = lastDayDate - todayDate;
return remainingDays;
})();
示例5:获取上个月最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth(); // 当前月份(0-11)
// 获取当前月的第一天,然后减1天,得到上个月的最后一天
var lastDay = new Date(year, month, 0);
return format(lastDay, "yyyy-MM-dd");
})();
示例6:获取下个月最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 2; // 下个月
// 获取下下个月的第一天,然后减1天,得到下个月的最后一天
var lastDay = new Date(year, month, 0);
return format(lastDay, "yyyy-MM-dd");
})();
示例7:获取本季度最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var quarter = Math.floor((month - 1) / 3);
// 季度最后一个月
var quarterEndMonth = (quarter + 1) * 3;
var lastDay = new Date(year, quarterEndMonth, 0);
return format(lastDay, "yyyy-MM-dd");
})();
示例8:获取本年度最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
// 获取下一年的第一天,然后减1天,得到本年的最后一天
var lastDay = new Date(year + 1, 0, 0);
return format(lastDay, "yyyy-MM-dd");
})();
示例9:获取本月所有日期¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var firstDay = new Date(year, month, 1);
var lastDay = new Date(year, month + 1, 0);
var lastDayDate = lastDay.getDate();
var dates = [];
for(var i = 1; i <= lastDayDate; i++){
var currentDate = new Date(year, month, i);
dates.push(format(currentDate, "yyyy-MM-dd"));
}
return JSON.stringify(dates);
})();
示例10:验证日期是否是本月最后一天¶
(function(){
var checkDate = new Date("2024-01-31");
var year = checkDate.getFullYear();
var month = checkDate.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var checkDateNum = checkDate.getDate();
var lastDayNum = lastDay.getDate();
if(checkDateNum == lastDayNum){
return "是本月最后一天";
}else{
return "不是本月最后一天,本月最后一天是: " + format(lastDay, "yyyy-MM-dd");
}
})();
示例11:获取本月工作日最后一天¶
(function(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var lastDayDate = lastDay.getDate();
var lastDayObj = new Date(year, month - 1, lastDayDate);
// 如果最后一天是周末,向前找到最后一个工作日
while(lastDayObj.getDay() == 0 || lastDayObj.getDay() == 6){
lastDayObj.setDate(lastDayObj.getDate() - 1);
}
return format(lastDayObj, "yyyy-MM-dd");
})();
示例12:错误处理和日志记录¶
(function(){
try{
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var lastDay = new Date(year, month, 0);
var result = format(lastDay, "yyyy-MM-dd");
println("当前月份: " + year + "-" + month);
println("本月最后一天: " + result);
return result;
}catch(e){
println("错误: " + e.getMessage());
return "获取失败";
}
})();
关键函数说明¶
new Date(year, month, day): 创建日期对象year: 年份month: 月份(0-11,0表示1月)day: 日期(0表示上个月的最后一天)date.getFullYear(): 获取年份date.getMonth(): 获取月份(0-11)date.getDate(): 获取日期(1-31)format(date, "格式"): 格式化日期Packages.java.util.Calendar: Java日历类calendar.getActualMaximum(Calendar.DAY_OF_MONTH): 获取月份的最大天数
获取最后一天的原理¶
JavaScript方法¶
说明¶
new Date(year, month, 0)中的0表示上个月的最后一天- 如果
month是当前月+1,则day=0就是当前月的最后一天 - 例如:
new Date(2024, 2, 0)返回 2024年1月的最后一天(2024-01-31)
注意事项¶
- ⚠️ 月份索引: JavaScript中月份从0开始(0-11),注意加1
- ⚠️ 闰年处理: 2月份的天数会自动处理闰年(28或29天)
- ⚠️ 日期有效性: 使用
new Date(year, month, 0)方法会自动处理月份边界 - ⚠️ 时区问题: 注意时区差异,可能影响日期计算
- ⚠️ 格式化: 使用format函数格式化日期输出
- 使用
new Date(year, month, 0)是最简单的方法 - 该方法会自动处理不同月份的天数差异
- 闰年的2月也会自动处理
使用场景¶
- 日期范围查询(本月第一天到最后一天)
- 报表统计(按月统计)
- 到期时间计算
- 日期验证
- 工作日计算
如需查看完整脚本代码,请访问源文档链接。