Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript(Jquery)小数点删除_Javascript_Jquery_Counter - Fatal编程技术网

JavaScript(Jquery)小数点删除

JavaScript(Jquery)小数点删除,javascript,jquery,counter,Javascript,Jquery,Counter,目前我正在研究JavaScript、jQuery和HTML5来提高自己。我有一个开源编码的时钟,我把它转换成一个计数器(反向计数器) 我遇到的问题是,在我的setInterval(){…}中,我有四个变量->秒、分钟、小时和天。问题是,当我得到秒数时,我得到的是1.155、2.312、3.412(秒) 我的setInterval函数如下所示 setInterval(function(){ //var duration = parseInt(Date.now() /1000 ) - 1365470

目前我正在研究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())
,所以我的输出在下面有一段随机时间

我必须给链接,因为我没有足够的代表

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


提前感谢。

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

var seconds = 1234.13;
var seconds = seconds + '';

seconds = seconds.split('.')[0];

console.log(seconds);
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个变量都有整数值,没有小数点。

正如您所看到的,设置间隔并不是每1秒运行一次,而是每1.1秒左右运行一次。将有一个小数点,你只需向上或向下取整。
parseInt(秒,10)->if(秒<10)seconds='0'+秒为什么不使用Javascript日期函数,如
getHours()
getSeconds()
,等等?如果您的意思是只想舍入为整数,请查看MDN()上的数学函数。如果您的意思是希望每秒准确调用
setInterval
,这是不可能的,因为浏览器会以不可预测的方式限制此方法。@NathanBouscal,是的,先生,我刚刚发现我在试图修复它时复制了秒数。删除重复的一个后,它就工作了。这很简单。我感到惭愧,应该想一想:)我以前也试过,但如果我用那种方式,图像的程度会增加超过1秒的程度。因此,时钟的第二部分每秒增加1秒,但图形显示为20秒。如果只处理输出本身,那么实际存储的秒数不会四舍五入。您只能在打印数据的绝对点使用
(seconds.split('.')+'')[0]
。这样它就不会受到其他数据操作的影响。它也可以工作,但我刚刚发现Math.floor()函数足以解决这个问题。谢谢