合信论坛

快捷导航
查看: 279|回复: 0

设定分钟数后的时钟

[复制链接]

13

主题

13

帖子

91

积分

注册会员

Rank: 1

积分
91
发表于 2026-3-30 20:21:00 | 显示全部楼层 |阅读模式
一般做分期付款会根据当前时钟和设定的时间,去计算下次到期的时间,执行脚本如下附件所示
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分钟以后的时间。
捕获.PNG






您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2026-6-15 00:18 , Processed in 0.022085 second(s), 22 queries .

快速回复 返回顶部 返回列表