【问题标题】:JavaScript (Jquery) Decimal Point RemovalJavaScript (Jquery) 小数点删除
【发布时间】:2013-04-10 19:50:57
【问题描述】:

目前我正在研究 JavaScript、jQuery、HTML5 以提高自己。我有一个开源编码的时钟,我已将其转换为计数器(反向计数器)。

我遇到的问题是,在我的setInterval(){...} 中,我有四个变量 -> 秒、分钟、小时和天。问题是,当我得到秒数时,我得到的结果是 1.155、2.312、3.412(秒)。

我的 setInterval 函数如下

setInterval(function(){
//var duration = parseInt(Date.now() /1000 ) - 1365470000;


var futureTime = Date.parse('April 10, 2013 22:00:00');

var duration = (( parseInt(Date.now() - futureTime ) / 1000));


var seconds = duration % 60;
duration = parseInt(duration / 60);
var minutes = duration % 60;
duration = parseInt(duration / 60);
var hours = (duration)%24;
duration = parseInt(duration / 24);
var days = duration % 365;  


        animation(gVars.green, seconds, 60);
        animation(gVars.blue, minutes, 60);
        animation(gVars.orange, hours, 24);
        animation(gVars.red, days, 365);

    },1000);

}

自从我使用parseInt(Date.now()) 以来,我的输出在一段时间内低于随机时间。

我没有足够的代表,我必须提供链接。

http://i.stack.imgur.com/0Zkbi.png

如何去除setInterval(){} 函数中的小数点?

提前致谢。

【问题讨论】:

  • 如您所见,设置间隔并不是每 1 秒运行一次,而是每 1.1 秒左右运行一次。会有一个小数,你只需要向上或向下舍入即可。
  • parseInt(seconds, 10) -> if (seconds < 10) seconds = '0'+seconds;
  • 你为什么不使用像getHours()getSeconds()等的Javascript日期函数?
  • 如果您只想四舍五入为整数,请查看 MDN (developer.mozilla.org/en-US/docs/JavaScript/Reference/…) 上的数学函数。如果你的意思是你想精确地每秒调用一次setInterval,这是不可能的,因为浏览器会以不可预知的方式限制这个方法。
  • @NathanBouscal ,是的,先生,我刚刚发现我在尝试修复它时重复了几秒钟。删除重复的后,它就可以工作了。这很简单。我觉得很惭愧,应该考虑一下:)

标签: javascript jquery counter


【解决方案1】:

JavaScript 提供了更方便的 API 来处理日期和时间,以获取秒、分钟、小时和天。试试这个代码:

var duration,
    seconds,
    minutes,
    hours;

duration = new Date((new Date('April 11, 2013 23:00:00')) - (new Date()));
seconds = duration.getSeconds();
minutes = duration.getMinutes();
hours = duration.getHours();

现在您将在上面的所有 4 个变量中都有整数值,没有任何小数点。

【讨论】:

    【解决方案2】:
    var seconds = 1234.13;
    var seconds = seconds + '';
    
    seconds = seconds.split('.')[0];
    
    console.log(seconds);
    

    【讨论】:

    • 我之前也试过,但是如果我用这种方式,图像度数增加超过1秒度数。所以时钟的第二部分每秒增加 1 秒,但图形明智的是 20~ 秒。
    • 如果您只操作输出本身,那么您存储的实际秒数不会四舍五入。您只能在打印数据的绝对位置使用(seconds.split('.')+'')[0]。那么它不应该受到其他数据操作的影响。
    • 它也可以,但我刚刚发现 Math.floor() 函数足以解决问题。谢谢!
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多