1

我正在为狗救援组织配置站点。我试图创建一个安乐死计数器,以直观地显示美国每天有多少只狗被安乐死。使用当前时间的实时“死亡计数器”,它仍然为访问者不停地逐页计数。

我希望计数器在每天午夜从 0 开始。然后,我希望计数器每 10.6 秒增加 +1。

我想出的充其量只是一个hack,而且似乎不准确。

我的 EMBARRASSING 代码如下,我知道数学是错误的,但是我的理解力有限。此外,我对 strtotime 缺乏了解可能会添加不必要的行。

        <?php
    $tsdate = date('d-m-Y');
    $date = date('m/d/Y');
    $timestamp = strtotime($tsdate);
    ?>
    <b><font color="#ff0000">
<span id="number"><?=(int)((time()-$timestamp)/14.6);?></span>
</font> dogs have been put to death in this country TODAY <?php echo $date ?>.<br />
Don't buy - Don't breed - ADOPT! </b>

    <script type="text/javascript">
        var i = <?=(int)((time()-$timestamp)/14.6);?>;
        function increment() {
            i++;
            document.getElementById('number').innerHTML = i;
        }
        setInterval('increment()', 10600);
    </script>

代码功能,但是,您可以看到我需要帮助,而且我一无所知。我不得不使用上面看到的 14.6 来获得接近但不正确的结果。

我还想显示这一年的总和。

有人能帮我吗?

非常感谢您的帮助,但我无法让它发挥作用。这是我所拥有的:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> count up test </title>

<script type='text/javascript'>
var div = document.getElementById('count');
var yeardiv = document.getElementById('yearcount');

function updateCount() {
    var d = new Date();
    // set d to midnight
    d.setHours(0,0,0,0);
    var count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 );
    div.innerHTML = count;

    // set d to Jan 1st
    d.setMonth( 0 );
    d.setDate( 1 );
    count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 )
    yeardiv.innerHTML = count;
}

updateCount();
setInterval( updateCount, 10600 );


</script>


</head>
<body>
Today: <div id="count"></div><br/>
This Year: <div id="yearcount"></div>

</body>


</html>

上面没有显示计数,只是文本......

谢谢你下面的作品!

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> count up test THANKS to agreco </title>
</head>
<body>

Today: <div id="count"></div><br/>
This Year: <div id="yearcount"></div>

<script type='text/javascript'>
var div = document.getElementById('count');
var yeardiv = document.getElementById('yearcount');

function updateCount() {
    var d = new Date();
    // set d to midnight
    d.setHours(0,0,0,0);
    var count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 );
    div.innerHTML = count;

    // set d to Jan 1st
    d.setMonth( 0 );
    d.setDate( 1 );
    count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 )
    yeardiv.innerHTML = count;
}

updateCount();
setInterval( updateCount, 10600 );
</script>
</body>
</html>

我真的要感谢你的帮助!

4

3 回答 3

3

最好用 javascript 来做这一切。正如另一条评论所说,它还将包括用户时区,其中 php 将基于服务器时间。

这里也是一年的更新代码:

var div = document.getElementById('count');
var yeardiv = document.getElementById('yearcount');

function updateCount() {
    var d = new Date();
    // set d to midnight
    d.setHours(0,0,0,0);
    var count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 );
    div.innerHTML = count;

    // set d to Jan 1st
    d.setMonth( 0 );
    d.setDate( 1 );
    count = Math.floor( ( new Date().getTime() - d.getTime() ) / 10600 )
    yeardiv.innerHTML = count;
}

updateCount();
setInterval( updateCount, 10600 );

看到这个小提琴

而不是递增,我只是根据现在-午夜计算了计数

于 2012-09-11T15:46:20.273 回答
1

我会跳过 PHP,只用 JavaScript 来做。使用 JavaScript Date 对象,然后使用小时分钟和秒计算自午夜以来的秒数。您的增量计时器似乎很好。另外,使用 JavaScript 将使用查看器的时区(JavaScript 在浏览器上运行)而不是服务器的时区(PHP 在服务器上运行)。

于 2012-09-11T15:45:38.003 回答
1

我认为你正在努力从 PHP 中获取午夜的秒数,你可以这样做:

<?php 
$ar = explode(':',date('G:i:s'));
$ar[0] *= 3600;
$ar[1] *= 60;
$seconds_from_midnight = $ar[0] + $ar[1] + $ar[2];
$dogs_killed_from_midnight = floor($seconds_from_midnight / 10.6);
?>

然后只需替换以下代码:

<?=(int)((time()-$timestamp)/14.6);?>

为了这:

<?=$dogs_killed_from_midnight;?>

那应该在您的代码中完成这项工作。

于 2012-09-11T16:01:55.803 回答