我正在尝试制作一个倒计时器,显示产品到期前的天数,当有0天时,我想显示一条消息,说明它已过期:
<?php
$target = mktime(0, 0, 0, 1, 7, 2013) ;
$today = time () ;
$difference =($target-$today) ;
$days =(int) ($difference/86400) ;
if ($today == $target)
{
print "this product has expired";
}
else
{
print "This product expires in $days days";
}
?>
当您访问该页面时,它始终显示第二条消息,即使今天与目标日期的日期相同。
如果可能的话,你能告诉我如何在不重新加载页面的情况下显示分钟和秒钟吗?我还想在剩下0天/分钟时更新MySQL数据库,这可能吗?不需要启动/停止按钮。
答案 0 :(得分:1)
这里有两个问题。第一个是$ today和$ target都是以秒为单位测量的。
这意味着除非您以与目标完全相同的秒数访问该页面,否则您将看不到该消息。
这也意味着在过期后的任何时间也会起作用,这可能不是你想要的。尝试使用:
if($today > $target)
要显示分钟和秒数,您应该查看可以倒计时的javascript。
答案 1 :(得分:1)
我认为你已经有了解决方案。但如果有人仍在寻找这种解决方案,那么这可能有所帮助。在这个解决方案中,我们可以分为几天,几小时,几分钟,几秒钟。
Reverse timer from javascript:
var target_date = new Date('Aug 01 2014 20:47:00').getTime();
var days, hours, minutes, seconds;
var countdown = document.getElementById('timeremaining');
var countdownTimer = setInterval(function () {
var current_date = new Date().getTime();
var seconds_left = (target_date - current_date) / 1000;
days = parseInt(seconds_left / 86400);
seconds_left = seconds_left % 86400;
hours = parseInt(seconds_left / 3600);
seconds_left = seconds_left % 3600;
minutes = parseInt(seconds_left / 60);
seconds = parseInt(seconds_left % 60);
if(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0 )
{
document.getElementById('timeremaining').innerHTML = '';
clearInterval(countdownTimer);
}
else
{
if(days>0)
{
days= days+'d,';
}
else
{
days='';
}
countdown.innerHTML ='( ' + days + checkTime(hours) + ':'+ checkTime(minutes) + ':' + checkTime(seconds) +' remaining)';
}
}, 1000);
function checkTime(i) {
if (i < 10) {i = '0' + i};
return i;
}