如何以秒为单位得到两个日期之间的时间差?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)

我试图在几秒钟内得出两个日期之间的差异。逻辑会是这样的:

  • 设定一个现在的初始日期;
  • 设置一个最终日期,这将是初始日期加上未来的某个秒数(比如说15)
  • 获得这两者之间的差异(秒数)

我之所以这样做是因为最后的日期/时间取决于其他变量,并且它从不相同(这取决于用户执行某些操作的速度),而且我还将其他事物的初始日期存储起来。

我一直在尝试这样的事情:

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

事情是,我从来没有得到正确的区别。我试图24 * 60用秒来分开,但我从来没有把握过。那么我的逻辑有什么问题?我可能会犯一些愚蠢的错误,因为它已经很晚了,但是让我感到困扰,我无法让它工作

提问于
用户回答回答于

代码

var startDate = new Date();
// Do your operations
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;

或者(endDate - startDate) / 1000在评论中指出的更简单,除非你使用打字稿。

说明

你需要调用对象的getTime()方法Date,然后简单地将它们相减并除以1000(因为它最初以毫秒为单位)。另外,当你调用getDate()方法时,实际上你得到的是一个1到31之间的整数(不是从0开始),而不是从调用getTime()方法获得的历元时间,表示自19701月1日00:00以来的毫秒数

胡言乱语

根据你的日期相关操作,您可能想要投资整合诸如date.js或者moment.js之类的库,这使得开发人员更容易,但这只是个人偏好的问题。

比如在moment.js中,我们会做的moment1.diff(moment2, "seconds")

这个答案有用的文档

用户回答回答于
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();

var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励