2013-04-10 3 views
1

В настоящее время я работаю над JavaScript, jQuery, HTML5, чтобы улучшить себя. У меня есть специально закодированные часы, которые я преобразовал в счетчик (обратный счетчик).JavaScript (JQuery) Удаление десятичной точки

Проблема у меня есть, в моем 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(){} функции?

Заранее спасибо.

+2

Math.floor (seconds)? – 2013-04-10 19:52:35

+0

Как вы можете видеть, интервал установки не работает ровно через 1 секунду, вместо этого он работает каждые 1,1 секунды. Там будет десятичная цифра, вам просто нужно округлить ее вверх или вниз. –

+0

'parseInt (seconds, 10) -> if (seconds <10) seconds = '0' + seconds;' – adeneo

ответ

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(); 

Теперь у вас будут целочисленные значения во всех четырех переменных выше, без какой-либо десятичной точки.

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

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

console.log(seconds); 
+0

Я также пробовал это раньше, но если я использую этот способ, степень изображения увеличивается более чем на 1 секунду. Таким образом, вторая часть часов увеличивается на 1 секунду в секунду, но графическая мудрая составляет 20 секунд. – user1492785

+0

И что, если вы только манипулируете самим выходом, так что фактическая секунда, которую вы храните, не округляется. Вы можете использовать '(seconds.split ('.') + '') [0]' в абсолютной точке, где вы печатаете данные. Тогда это не должно зависеть от других манипуляций с данными. – 2013-04-10 20:05:56

+0

Он тоже работает, но я просто понял, что для решения проблемы достаточно функции Math.floor(). Благодаря ! – user1492785

Смежные вопросы