javascript算法题
巴扎黑
巴扎黑 2017-04-11 10:17:26
[JavaScript讨论组]

已知两个时间戳a,b,单位ms

把它们的差值转换成 x天x小时x分钟

如何设计该算法,可以将误差降至最低呢?

巴扎黑
巴扎黑

全部回复(4)
PHP中文网
function timediff(a, b) {
    var delta = Math.round(Math.abs(a - b) / (1000 * 60));// 相差分钟数
    var day = Math.floor(delta / (60 * 24)); // 天
    delta %= (60 * 24);
    var hour = Math.floor(delta / 60); // 小时
    delta %= 60;
    var minute = delta; // 分钟
    
    return [day, '天', hour, '小时', minute, '分钟'].join('');
}

function timediff2(a, b) {
    var fragments = [];
    var delta = Math.round(Math.abs(a - b) / (1000 * 60));// 相差分钟数
    var day = Math.floor(delta / (60 * 24)); // 天
    delta %= (60 * 24);
    if (day > 0) {
        fragments.push(day, '天');
    }
    var hour = Math.floor(delta / 60); // 小时
    delta %= 60;
    if (hour > 0) {
        fragments.push(hour, '小时');
    }
    
    var minute = delta; // 分钟
    fragments.push(minute, '分钟');
    
    return fragments.join('');
}
迷茫

为什么会有误差?

PHP中文网

diff = Math.abs(a - b);
now = new Date();
time = new Date(now.getTime() + diff);
diffDays = time.getDate() - now.getDate();
diffHours = time.getHours() - now.getHours();
diffMinutes = time.getMinutes() - now.getMinutes();

大家讲道理
function timeInterval(a, b) {
    var result = null;
    var differMin = Math.floor(Math.abs(a - b) / 1000 / 60);
    var differHour = Math.floor(differMin / 60);

    var day = Math.floor(differHour / 24);
    var hour = differHour - day * 24;
    var minute = differMin - differHour * 60;

    result = day + "天" + hour + "小时" + minute + "分钟";
    return result;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号