Мне пришлось создать таймер обратного отсчета в стиле аукциона. Я установил дату окончания в коде javascript, а затем мне пришлось выяснить, как рассчитать разницу. Мой код работает и ведет обратный отсчет, но я хочу посмотреть, есть ли эффективный способ сделать это. Я получил расчет дня из книги, но подумал, что нет необходимости создавать переменную часа, минуты, секунды и делить на нее.
var day = 1000 * 60 * 60 *24;
// Initialize and set variables.
var startDate = new Date();
startDate.toTimeString();
var endDate = new Date('4 Oct 2014 12:30:00 UTC');
endDate.toTimeString();
var startHour = startDate.getHours();
var startMin = startDate.getMinutes();
var startSec = startDate.getSeconds();
var endHour = endDate.getHours();
var endMin = endDate.getMinutes();
var endSec = endDate.getSeconds();
// Make sure the start date comes first:
if (startDate < endDate) {
// Get the interval:
var diffDay = endDate - startDate;
if (diffDay <= day) {
intervalD = '1 day ';
} else {
intervalD = Math.round(diffDay/day) + ' days ';
}
if (endMin >= startMin){ // Make sure its counting down
var diffHour = Math.abs(endHour - startHour);
} else { //Since start hour is greater, we now have to count down from 60.
var diffHour = ((endHour - startHour) + 60);
}
if (endMin >= startMin){
var diffMin = Math.abs(endMin - startMin);
} else {
var diffMin = ((endMin - startMin) + 60);
}
if (endSec >= startSec){
var diffSec = Math.abs(endSec - startSec);
} else {
var diffSec = ((endSec - startSec) + 60);
}