|
|
一般做分期付款会根据当前时钟和设定的时间,去计算下次到期的时间,执行脚本如下附件所示
function padZero(num) {
if (num < 10) {
return '0' + num;
}
return num.toString();
}
function calculateTargetTime(decYear, decMonth, decDay, decHour, decMinute, addMinutes) {
try {
// 1. 校验所有参数是否为合法数字
if (isNaN(decYear) || isNaN(decMonth) || isNaN(decDay) || isNaN(decHour) || isNaN(decMinute) || isNaN(addMinutes)) {
throw new Error('所有参数必须为十进制数字,如2026、3、6、16、32、120');
}
// 2. 强制转换为数字类型并校验范围
var year = Number(decYear);
var month = Number(decMonth);
var day = Number(decDay);
var hour = Number(decHour);
var minute = Number(decMinute);
var addMin = Number(addMinutes);
// 基础范围校验
if (month < 1 || month > 12) throw new Error('月份需在1-12之间');
if (day < 1 || day > 31) throw new Error('日期需在1-31之间');
if (hour < 0 || hour > 23) throw new Error('小时需在0-23之间');
if (minute < 0 || minute > 59) throw new Error('分钟需在0-59之间');
// 移除对addMin的负数限制,现在允许负数
// 3. 构造Date对象(注意:JS的月份是0基,需减1)
var targetDate = new Date(year, month - 1, day, hour, minute);
// 4. 校验日期合法性(避免2月30日、4月31日等无效日期)
if (
targetDate.getFullYear() !== year ||
targetDate.getMonth() + 1 !== month ||
targetDate.getDate() !== day ||
targetDate.getHours() !== hour ||
targetDate.getMinutes() !== minute
) {
throw new Error('无效日期时间:' + year + '年' + month + '月' + day + '日 ' + hour + ':' + minute);
}
// 5. 累加设定的分钟数(自动处理跨天/跨月/跨年,包括负数)
targetDate.setMinutes(targetDate.getMinutes() + addMin);
// 6. 格式化输出(工控标准格式:YYYY-MM-DD HH:mm)
var resYear = targetDate.getFullYear().toFixed( 0 );
var resMonth =padZero((targetDate.getMonth() + 1).toFixed( 0 )); // 转回1基
var resDay = padZero(targetDate.getDate().toFixed( 0 ));
var resHour =padZero(targetDate.getHours().toFixed( 0 ));
var resMinute =padZero(targetDate.getMinutes().toFixed( 0 ));
return resYear + '-' + resMonth + '-' + resDay + ' ' + resHour + ':' + resMinute;
} catch (err) {
// 工控环境友好的错误提示
alert('时间计算错误:' + err.message);
return null;
}
}
var result2= calculateTargetTime(smartTags('年'),smartTags('月'),smartTags('日'),smartTags('时'),smartTags('分'),smartTags('设定分钟'));
smartTags('显示时间')=result2;
以下演示的是当前时间为2026年3月30日19:50 设定1000分钟以后,按下按钮触发脚本 显示1000分钟以后的时间。
|
|