2

ここで統計ページを見ました:http://movies.io/i/stats

そして、サイトが誕生してから今日までの経過時間をカウントするカウンターがあることに気がつきました。次のように表示されIt was born 1 month, 8 days, 2 hours, and 36 minutes ago.ます。ページで運がないコードを見つけようとしました。

問題は、ハウツーを検索すると、日数しか数えられないことです。もう1つの問題は、ページを更新せずに更新することです。本格的なコーディングのようです。

表示されているページのようなカウンターを作成するにはどうすればよいですか? jQuery は使いたくない。

これが次のような質問のように聞こえる場合は、申し訳ありません。しかし問題は、私が新人で、作りたいものに対する解決策を見つけることができなかったことです。

4

2 に答える 2

3

退屈の名の下に...このページはjqueryなしでjavascriptのタイムスパンを更新する必要があります。

<!doctype html>
<html>
<body onload="init()">
    <script type="text/javascript">
        function init() {
            updateTimespan();
            setInterval(updateTimespan, 3000);
        }

        function updateTimespan() {
            var birth = new Date(1987, 3, 20); // april 20th
            var now = new Date();
            var timespan = getTimespan(birth, now);

            var content = '' + timespan.years + ' years, ' +
                timespan.months + ' months, ' +
                timespan.days + ' days, ' +
                timespan.hours + ' hours, ' +
                timespan.minutes + ' minutes, ' +
                timespan.seconds + ' seconds.';

            var p = document.getElementById('pTimespan');
            p.innerHTML = content;
        }

    function getTimespan(start, end) {
        var seconds = end.getSeconds() - start.getSeconds();
        var minutes = end.getMinutes() - start.getMinutes();
        var hours = end.getHours() - start.getHours();
        var days = end.getDate() - start.getDate();
        var months = end.getMonth() - start.getMonth();
        var years = end.getFullYear() - start.getFullYear();

        if (seconds < 0) {
            minutes -= 1;
            seconds += 60;
        }

        if (minutes < 0) {
            hours -= 1;
            minutes += 60;
        }

        if (hours < 0) {
            days -= 1;
            hours += 24;
        }

        if (days < 0) {
            months -= 1;
            var lastMonthNumber = end.getMonth() - 1;
            if (lastMonthNumber < 0) { lastMonthNumber += 12; } // will never be Feb.
            var daysInLastMonth = new Date(end.getFullYear(), lastMonthNumber, 0).getDate();
            days += daysInLastMonth;
        }

        if (months < 0) {
            years -= 1;
            months += 12;
        }

        return {
            years: years,
            months: months,
            days: days,
            hours: hours,
            minutes: minutes,
            seconds: seconds
        };
    }
    </script>
    <p>
        Time since my birth</p>
    <p id="pTimespan">
        Will be updated</p>
</body>
</html>
于 2012-06-27T17:25:01.737 に答える
0

解決策の 1 つは、サイトが作成されたエポック タイム (または近似値) を取得することです。次に、そこから現在の時刻を引きます。次に、そのミリ秒数を使用して、年、月、日などに変換します。これは、javascript または PHP を使用するサーバーで行うことができます。

于 2012-06-27T00:29:24.957 に答える