Мне было интересно, как лучше всего рассчитать разницу во времени с настоящего момента до определенной точки, скажем, времени обратного отсчета.
У меня есть аукцион, в котором в определенный момент есть время закрытия, это время сохраняется в записи MySQL в формате «DATETIME 00-00-000 00:00:00». Эта запись называется closetime.
Теперь на моем сайте у меня есть код JavaScript, который получает это время через файл PHP. JavaScript повторяется каждую секунду, используя setInterval 1000
. PHP-файл получает время закрытия из БД и отправляет его обратно в этом формате
strtotime($result['closetime']);
И я получаю время запроса, я хочу использовать время сервера, а не время в JavaScript, потому что часы пользователя могут быть выключены.
strtotime(date("H:i:s", $_SERVER['REQUEST_TIME']))
Я отправляю обратно эти две метки времени и вычисляю разницу во времени между ними в JavaScript. Я использую эту функцию для этого, значения, отправленные обратно из PHP, я называю currentTime и closeTime, я думаю, что это должно быть ясно.
function auctionDelayTime(currentTime,closeTime){
totaldelay = closeTime - currentTime;
if(totaldelay <= 0){
return 'ended';
}else{
if( days=parseInt((Math.floor(totaldelay/86400))) )
totaldelay = totaldelay % 86400;
if( hours=parseInt((Math.floor(totaldelay/3600))) )
totaldelay = totaldelay % 3600;
if( minutes=parseInt((Math.floor(totaldelay/60))) )
totaldelay = totaldelay % 60;
if( seconds=parseInt((Math.floor(totaldelay/1))) )
totaldelay = totaldelay % 1;
return hours+':'+formatTimes(minutes)+':'+formatTimes(seconds);
}
}
function formatTimes(value){
return value < 10 ? '0'+value : value;
}
Я думаю, что очень много кода делает что-то настолько простое. У кого-нибудь есть лучшее решение или, может быть, более «красивый» код.
Наслаждайтесь!