计算从约会到今天

时间:2012-06-27 00:25:38

标签: javascript

我在这里查看统计信息页面:http://movies.io/i/stats

我注意到那里有一个很酷的漂亮的东西,有一个计数器,计算自该网站诞生和今天以来的时间。它显示为:It was born 1 month, 8 days, 2 hours, and 36 minutes ago.我尝试在页面上找不到运气的代码。

问题在于,在搜索如何使用时,我只发现数天。还有一个问题是刷新它...而不刷新页面。这似乎是一些严肃的编码。

如何在显示的页面上制作计数器?我不想使用jQuery。

如果这听起来像是一个问题,我很抱歉:嘿......在我放松的时候做我的工作。但问题是我是新手,我无法找到解决方案。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

一种解决方案是获取您的网站创建的纪元时间(或近似值)。然后从中减去当前时间。然后使用该毫秒数转换为年,月,日等。这可以在javascript中或在使用PHP的服务器上完成。

相关问题