Javascript 减法日期

Javascript 减法日期,javascript,jquery,timestamp,milliseconds,Javascript,Jquery,Timestamp,Milliseconds,我一直在尝试将我的时间戳格式化为facebook/twitter风格,它显示1秒、1天、1个月、1年等等。但是由于某些原因,它没有返回正确的值,我不知道为什么 下面我复制了我正在使用的代码,并制作了两个减法日期的示例 如果有人能帮我指出问题所在,并指出我在显示正确值时出错的地方,那就太好了 //返回的结果 $(“#TimeFormatted”).append(“不除以1000:+FormatTimeAgo(减去日期(“1432215738000”)); $(“#TimeFormatted2”)

我一直在尝试将我的时间戳格式化为facebook/twitter风格,它显示1秒、1天、1个月、1年等等。但是由于某些原因,它没有返回正确的值,我不知道为什么

下面我复制了我正在使用的代码,并制作了两个减法日期的示例

如果有人能帮我指出问题所在,并指出我在显示正确值时出错的地方,那就太好了

//返回的结果
$(“#TimeFormatted”).append(“不除以1000:+FormatTimeAgo(减去日期(“1432215738000”));
$(“#TimeFormatted2”).append(“除以1000:+FormatTimeAgo(减去日期2(“1432215738000”)));
函数FormatTimeAgo(毫秒)
{
函数编号显示(编号){
返回(编号>1)?“s”:“”;
}
var temp=数学下限(毫秒/1000);
变量年份=数学下限(温度/31536000);
//多年前
如果(年){
返回年份+年份+数字趋势(年);
}
//几天前
变量天数=数学下限((温度%=31536000)/86400);
如果(天){
返回天数+天数+数字显示天数;
}
//几小时前
var小时=数学地板((温度%=86400)/3600);
若有(小时){
返回小时数+小时数+数字显示(小时);
}
//几分钟前
var分钟数=数学地板((温度%=3600)/60);
若有(分钟){
返回分钟数+分钟数+数字显示(分钟);
}
//几秒钟前
var秒=温度%60;
如果(秒){
返回秒数+秒数+数字显示(秒);
}
返回“少于一秒”;//“刚才”//或其他您喜欢的字符串;
}
函数日期(数据库时间)
{
//当前时间
var date=new date().getTime();
//数据库值
var mysqlDate=新日期(databaseTime);
var getMYSQLDate=mysqlDate.getTime();
//减去日期
var subtractDates=date-getMYSQLDate;
返回日期;
}
函数减去日期2(数据库时间)
{
//当前时间
var date=new date().getTime();
//数据库值
var mysqlDate2=新日期(databaseTime/1000);
var getMYSQLDate2=mysqlDate2.getTime();
//减去日期
var subtractDates2=date-getMYSQLDate2;
返回日期2;
}

我现在觉得有点傻,因为我已经回答了自己的问题。我忘记做什么了

数学下限((减去的时间)/1000) 克里斯-

查看此线程,它似乎回答了您的实际问题:

堆栈溢出:

作为对毫秒计算的替代,考虑利用Dead对象的幂。减去两个日期值后,剩下的是自1970年1月1日以来经过的时间。然后你只需要用-1970来抵消这一年,用-1来抵消这一天。。。你有你想要的信息

正如Ivan Sivak指出的,日期很难处理。。。尤其是当你处理世界时区和季节性时间变化时。这正是moment.js有帮助的时候

无论如何,如果您想了解不同的方法,这里还有一些代码可以尝试:

<!doctype html>
<html>
<body>
<div id="stdout"></div>

<script type="text/javascript">

var startDate = new Date( 1432215738000 );

setInterval( 
    function() {
        var t = new Date( new Date() - startDate ); 
        document.getElementById('stdout').innerHTML = (
            'year=' + ( t.getUTCFullYear() - 1970) + 
            ' day=' + (t.getUTCDate() - 1) + 
            ' hour=' + t.getUTCHours() + 
            ' minute=' + t.getUTCMinutes() + 
            ' seconds=' + t.getUTCSeconds()
        );
    }, 
    1000
);
</script>
</body>
</html>

var startDate=新日期(1432215738000);
设定间隔(
函数(){
var t=新日期(新日期()-startDate);
document.getElementById('stdout')。innerHTML=(
'year='+(t.getUTCFullYear()-1970)+
'day='+(t.getUTCDate()-1)+
“hour=”+t.getUTCHours()+
“分钟=”+t.getUTCMinutes()+
'秒='+t.getUTCSeconds()
);
}, 
1000
);

只是为了信息-你可以考虑<代码>时刻。JS<代码>lib@IvanSivak我试图减少库,所以我不想使用像Simple这样的东西。JStime操作可能非常棘手,正如伊凡所说,你应该考虑使用<代码> Time.js<代码>(除非你只是在练习)@skirato我正在练习并努力提高我在各个领域的技能,因此我正在努力提高对时间的控制。为这个答案干杯,罗伯特,这是非常有用和有趣的
<!doctype html>
<html>
<body>
<div id="stdout"></div>

<script type="text/javascript">

var startDate = new Date( 1432215738000 );

setInterval( 
    function() {
        var t = new Date( new Date() - startDate ); 
        document.getElementById('stdout').innerHTML = (
            'year=' + ( t.getUTCFullYear() - 1970) + 
            ' day=' + (t.getUTCDate() - 1) + 
            ' hour=' + t.getUTCHours() + 
            ' minute=' + t.getUTCMinutes() + 
            ' seconds=' + t.getUTCSeconds()
        );
    }, 
    1000
);
</script>
</body>
</html>