1

犬の救助組織のサイトを構成しています。私は安楽死カウンターを作成して、米国で毎日何匹の犬が飼われているかを視覚的に示しようとしています。現在の時刻を使用するライブの「デスカウンター」なので、訪問者のページごとにノンストップでカウントし続けます。

毎日深夜0時にカウンターを開始したい。次に、カウンターを10.6秒ごとに+1ずつインクリメントします。

私が思いついたのは、せいぜいハックであり、一見正確ではないようです。

私の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で真夜中から秒を取得するのに苦労していると思います。次のように実行できます。

<?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 に答える
1

PHPをスキップして、JavaScriptで実行します。JavaScript Dateオブジェクトを使用してから、時間、分、秒を使用して真夜中からの秒数を計算します。インクリメントタイマーは問題ないようです。さらに、JavaScriptを使用すると、サーバーのタイムゾーン(PHPはサーバーで実行されます)ではなく、ビューアーのタイムゾーン(JavaScriptはブラウザーで実行されます)が使用されます。

于 2012-09-11T15:45:38.003 に答える