为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JavaScript中得到两个日期之间的区别?

如何在JavaScript中得到两个日期之间的区别?

慕莱坞森 2019-06-23 14:48:33
如何在JavaScript中得到两个日期之间的区别?我正在创建一个应用程序,它允许您定义具有时间框架的事件。当用户选择或更改开始日期时,我想自动填写结束日期。但是,我不太清楚如何得到这两次之间的差异,然后如何利用这一差异创建一个新的结束日期。
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

在JavaScript中,可以通过调用getTime()方法只是在数字表达式中使用日期。

因此,为了得到差异,只需减去这两个日期。

若要根据差异创建新日期,只需传递构造函数中的毫秒数即可。

var oldBegin = ...var oldEnd = ...var newBegin = ...var newEnd = new Date(newBegin + oldEnd - oldBegin);

这应该就行了

编辑修正@bdukes指出的错误

编辑:

为了解释这种行为,oldBeginoldEnd,和newBeginDate实例。呼叫运营商+-将触发Javascript自动转换,并自动调用valueOf()这些对象的原型方法。碰巧valueOf()方法在Date对象作为对getTime().

所以基本上:date.getTime() === date.valueOf() === (0 + date) === (+date)


查看完整回答
反对 回复 2019-06-23
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

见JsFiddle演示

    var date1 = new Date();    
    var date2 = new Date("2025/07/30 21:59:00");
    //Customise date2 for your required future time

    showDiff();function showDiff(date1, date2){

    var diff = (date2 - date1)/1000;
    diff = Math.abs(Math.floor(diff));

    var days = Math.floor(diff/(24*60*60));
    var leftSec = diff - days * 24*60*60;

    var hrs = Math.floor(leftSec/(60*60));
    var leftSec = leftSec - hrs * 60*60;

    var min = Math.floor(leftSec/(60));
    var leftSec = leftSec - min * 60;

    document.getElementById("showTime").innerHTML = "You have " + days + " days " + hrs + " hours " + min + " 
    minutes and " + leftSec + " seconds before death.";setTimeout(showDiff,1000);}

对于HTML代码:

<div id="showTime"></div>


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号