0

我正在尝试制作一个倒数计时器,它显示产品到期前的天数,当有 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 数据库,这可能吗?不需要有开始/停止按钮。

4

2 回答 2

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;
    }      
于 2014-08-02T18:23:13.520 回答
1

这里有两个问题。首先是 $today 和 $target 都以秒为单位。

这意味着除非您在与目标完全相同的时间访问该页面,否则您不会看到该消息。

这也意味着过期后的任何时间也将起作用,这可能不是您想要的。尝试使用:

if($today > $target)

要显示分钟和秒,您应该查看可以倒计时的javascript。

于 2013-01-06T21:53:44.077 回答