2014-10-27 3 views
0

Я использую JavaScript, и я хочу, чтобы отсчет времени каждые 2 часа, начиная с 12 утра EST.JavaScript Получить, чтобы получить текущее время и текущее время обратного отсчета

я в настоящее время есть код, который отсчитывает 2 часа и сбрасывается, но я хочу, чтобы это делалось исходя из времени с 12 утра.

Я либо хочу, чтобы мой текущий код начинался с 12 часов, а не когда некоторые обращаются к странице, или мне нужно сделать это по-другому (откройте предложения).

Большое спасибо!

var startTime = new Date(), 
    expiryTime = new Date(), 
    hourElem = document.getElementById('js-hour'), 
    minuteElem = document.getElementById('js-minute'), 
    secondElem = document.getElementById('js-second'); 

// Set up expiry time 
expiryTime.setHours(expiryTime.getHours() + 2); 
expiryTime.setMinutes(expiryTime.getMinutes() + 0); 
expiryTime.setSeconds(expiryTime.getSeconds() + 0); 

var diffInMs = expiryTime - startTime, 
    diffInSecs = Math.round(diffInMs/1000), 
    amountOfHours = Math.floor(diffInSecs/3600), 
    amountOfSeconds = diffInSecs - (amountOfHours * 3600), 
    amountOfMinutes = Math.floor(amountOfSeconds/60), 
    amountOfSeconds = amountOfSeconds - (amountOfMinutes * 60); 

// Set up the countdown timer for display 
// Set up the hours 
if(amountOfHours > 0) { 
    hourElem.innerHTML = (amountOfHours < 10) 
    ? '0' + amountOfHours + ' : ' 
    : amountOfHours + ' : '; 
} else { 
    hourElem.innerHTML = '00 : '; 
} 

// Set up the minutes 
if(amountOfMinutes > 0) { 
    minuteElem.innerHTML = (amountOfMinutes < 10) 
    ? '0' + amountOfMinutes + ' : ' 
    : amountOfMinutes + ' : '; 
} else { 
    minuteElem.innerHTML = '00 : '; 
} 

// // Set up the seconds 
if(amountOfSeconds > 0) { 
    secondElem.innerHTML = (amountOfSeconds < 10) 
    ? '0' + amountOfSeconds 
    : amountOfSeconds; 
} else { 
    secondElem.innerHTML = '00'; 
} 

function countDown() { 
    var dateNow = new Date(); 

    // If we're not at the end of the timer, continue the countdown 
    if(expiryTime > dateNow) { 

    // References to current countdown values 
    var hours = parseInt(hourElem.innerHTML); 
     minutes = parseInt(minuteElem.innerHTML), 
     seconds = parseInt(secondElem.innerHTML); 

    // Update the hour if necessary 
    if(minutes == 0 && seconds == 0) { 
    if ( hours != 0) { 
    --hours; 

    hourElem.innerHTML = (hours < 10) ? '0' + (hours) + ' : ' : (hours) + ' : '; 
    minuteElem.innerHTML = '59 : '; 
    secondElem.innerHTML = '59'; 
    return; 
    } 
    else { 
     hourElem.innerHTML = '02 : '; 
     minuteElem.innerHTML = '00 : '; 
    secondElem.innerHTML = '00'; 
    return; 
    } 

    } 

    // Update the minute if necessary 
    if(seconds == 0) { 

    if(minutes > 0) { 
     --minutes; 
     minuteElem.innerHTML = (minutes > 10) ? minutes + ' : ' : '0' + minutes + ' : '; 

     } else { 
     minuteElem.innerHTML = '59' + ' : '; 
     } 

     return secondElem.innerHTML = '59'; 

    } else { 
     --seconds; 
     secondElem.innerHTML = (seconds < 10) ? '0' + seconds : seconds; 
    } 

    } else { 
expiryTime.setHours(expiryTime.getHours() + 2); 
expiryTime.setMinutes(expiryTime.getMinutes() + 0); 
expiryTime.setSeconds(expiryTime.getSeconds() + 0); 



    } 
} 


window.onload = function() { 
    // Begin the countdown! 
    countDownInterval = setInterval(countDown, 1000); 
} 
+0

Что делать, если на вашей странице никого не было в 12 часов ??? – SasaT

+0

Если у вас есть 2-часовой обратный отсчет, то он отсчитывается с 12 до 2 утра и сбрасывается. В 4AM, 6AM, 8AM, 10AM, 12PM и т. Д. Он сбрасывается. Если время 5AM, время должно быть в течение одного часа, отсчитывая до 0. Так что, похоже, вам нужно настроить, как вы засеваете свой таймер. Ваше семя таймера всегда установлено равным 2, и это не всегда верно. – AxGryndr

+0

У нас есть служба, которая сбрасывается в 12 часов и каждые 2 часа после этого. В основном мне нужно реплицировать это для веб-сайта в javascript. Я понятия не имею, как это сделать. – user3745357

ответ

0

В мой комментарий вам нужно изменить способ использования таймера.

Теперь вы устанавливаете время истечения времени на 2 часа от текущего системного времени вместо 2-часового вращающегося таймера.

Если вы рассчитали количество секунд с полуночи текущей даты, вы должны знать, где начать семя.

Есть 7200 секунд через 2 часа. Если вы берете количество секунд с полуночи и используете MOD, чтобы определить остаток, вы должны определить, насколько далеко вы находитесь в 2-часовом блоке. Затем используйте 7200 минус остаток.

Оттуда вы можете рассчитать количество часов, минут и секунд, оставшихся до окончания обратного отсчета.

(* Начиная звучать, как домашнее задание, так что я не буду размещать код)

+0

Хорошо, спасибо, я постараюсь что-то сделать с этим. Это проект для работы. – user3745357

0

Хорошо, так я понял мой вопрос. Я забыл, что Date.now() дает дату с 12:00 в какой-то день. Я взял это в ms, перевел его на секунды, взял MOD этого% 7200 и вычитал из него 7200, чтобы заставить его отсчитывать. Затем я просто сделал округление и простое вычитание, чтобы получить часы минут и секунд.

var end = Date.now(); 
var div = (end/1000); 
var time = (div/7200); 
var timesince = (div % 7200); 
var timebefore = (7200 - timesince); 

var hours = Math.floor(timebefore/3600); 
var minutes = Math.floor(timebefore/60 - hours * 60); 
var seconds = Math.floor(timebefore - minutes * 60 - hours * 3600); 

document.write(hours + ":" + minutes + ":" + seconds); 
Смежные вопросы