时间计算器给出了错误的答案

时间:2016-09-23 14:39:34

标签: jquery countdown countdowntimer

所以我做了一个函数来确定我要等多久才能到达巴斯:

function arrival(arrtime){

            //convert to seconds
            function toSeconds(time_str) {
                // Extract hours, minutes and seconds
                var parts = time_str.split(':');
                // compute  and return total seconds
                return (parts[0] * 3600) + (parts[1] * 60) + parts[2];// seconds
            }

            var a = new Date().getHours() + ":" + new Date().getMinutes() + ":" + new Date().getSeconds();//current time

            var difference = toSeconds(arrtime) - toSeconds(a);

            function sformat(s) {
                var fm = [
                        Math.floor(s / 60 / 60 / 24), // DAYS
                        Math.floor(s / 60 / 60) % 24, // HOURS
                        Math.floor(s / 60) % 60, // MINUTES
                        s % 60 // SECONDS
                ];
                return $.map(fm, function(v, i) { return ((v < 10) ? '0' : '') + v; }).join(':');
            }

            if (difference > 0){
                result = sformat(difference);
            } else if (difference < 1 && difference > -20) {
                result = "Chegou!";
            } else if (difference <= -20) {
                result = "Amanhã às " + arrtime;
            }

            return result;
        }
//usage example:
arrival("16:30:00");

但是它给了我错误的答案.... 一些计算必定是错误的,但对于我的生活,我无法弄明白!

1 个答案:

答案 0 :(得分:0)

我在这里找到的一个问题是你的toSeconds函数,而不是将所有秒加起来将它作为字符串连接起来。鉴于您的示例(16:30:00),当您应该返回57600 + 1800 + 00 = 59400秒时,您将返回57600180000秒。

尝试使用此方法,如果您有其他问题,请查看是否让您更接近发布评论的解决方案。

function toSeconds(time_str) {
  // Extract hours, minutes and seconds
  var parts = time_str.split(':');

  // compute  and return total seconds
  var hoursAsSeconds = parseInt(parts[0]) * 3600;
  var minAsSeconds = parseInt(parts[1]) * 60;
  var seconds = parseInt(parts[2]);

  return hoursAsSeconds + minAsSeconds + seconds;
}