Javascript 从一个日期算到今天

Javascript 从一个日期算到今天,javascript,Javascript,我在这里查看了一个统计页面: 我注意到下面有一个很酷很漂亮的东西,上面有一个计数器,用来计算网站诞生至今的时间。它显示如下:它出生于1个月8天2小时36分钟前。我在页面上尝试查找代码时运气不佳 问题是,在搜索“如何”时,我只发现了以天为单位的计数。还有一个问题是刷新它。。。不刷新页面。这似乎是一些严肃的编码 如何在显示的页面上制作计数器?我不想使用jQuery 如果这听起来像是一个问题,我很抱歉:嘿。。。在我放松的时候做好我的工作。但问题是,我是新来的,我找不到解决我想做的事情的方法。一个方法是

我在这里查看了一个统计页面:

我注意到下面有一个很酷很漂亮的东西,上面有一个计数器,用来计算网站诞生至今的时间。它显示如下:
它出生于1个月8天2小时36分钟前。
我在页面上尝试查找代码时运气不佳

问题是,在搜索“如何”时,我只发现了以天为单位的计数。还有一个问题是刷新它。。。不刷新页面。这似乎是一些严肃的编码

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


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

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

以无聊的名义。。。此页面应在不使用jquery的情况下更新javascript中的timespan

<!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>

函数init(){
updateTimespan();
setInterval(updateTimespan,3000);
}
函数updateTimespan(){
出生日期=新日期(1987年3月20日);//4月20日
var now=新日期();
var timespan=getTimespan(出生,现在);
var内容=''+timespan.years+'年,'+
timespan.months+月数,'+
timespan.days+'天,'+
timespan.hours+时数,'+
timespan.minutes+“分钟,”+
timespan.seconds+秒数;
var p=document.getElementById('pTimespan');
p、 innerHTML=内容;
}
函数getTimespan(开始、结束){
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();
如果(秒<0){
分钟-=1;
秒+=60;
}
如果(分钟<0){
小时数-=1;
分钟+=60;
}
如果(小时<0){
天数-=1天;
小时+=24小时;
}
如果(天数<0){
月份-=1;
var lastMonthNumber=end.getMonth()-1;
如果(lastMonthNumber<0){lastMonthNumber+=12;}//将永远不会是Feb。
var daysinastmonth=新日期(end.getFullYear(),lastMonthNumber,0).getDate();
天数+=上月的天数;
}
如果(月数<0){
年-=1年;
月数+=12;
}
返回{
年:年,
月份:月份,,
天:天,
小时:小时,
分钟:分钟,
秒:秒
};
}

我出生以来的时间

将进行更新


对于movies.io,他们正在使用Ajax调用来更新计数器。可能会重复您推荐的答案是什么?这有点难,因为没有太多的赞成票和不被接受的答案。这很好用!谢谢你花时间为我编码!