以秒为单位获取两个日期之间的时差

时间:2012-12-15 17:48:07

标签: javascript date

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

  • 设置现在的初始日期;
  • 设定一个最终日期,即将来的初始日期加上一些秒数(例如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,这会留给我秒,但我从来没有做对。那么我的逻辑有什么不对?我可能会犯一些愚蠢的错误,因为它已经很晚了,但令我困扰的是我无法让它工作:)

8 个答案:

答案 0 :(得分:210)

守则

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之间的整数(不是基于零),而不是你得到的纪元时间调用getTime()方法,表示自 1970年1月1日,00:00

以来的毫秒数

咆哮

根据您的日期相关操作的不同,您可能需要投资集成date.jsmoment.js这样的库,这样可以让开发人员轻松 ,但这只是个人偏好的问题。

例如在moment.js中,我们会moment1.diff(moment2, "seconds")这是美丽的。


此答案的有用文档

答案 1 :(得分:3)

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

答案 2 :(得分:1)

您可以使用new Date().getTime()获取时间戳。然后,您可以计算结束和开始之间的差异,最后将时间戳ms转换为s

const start = new Date().getTime();
const end = new Date().getTime();

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);

答案 3 :(得分:1)

准确和快速将在几秒钟内给出输出:

 let startDate = new Date()
 let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
 let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);

答案 4 :(得分:0)

尝试使用高级编程语言的专用函数。 JavaScript .getSeconds();适合此处:

var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds(); 

var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds(); 

alert(specifiedTimeSeconds-currentTimeSeconds);

答案 5 :(得分:0)

现在和10分钟后使用momentjs的时间差

let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');

let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;

答案 6 :(得分:0)

下面的代码将以秒为单位给出时间差。

    var date1 = new Date(); // current date
    var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
    var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
    var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second

    alert(timeDiffInSecond );

答案 7 :(得分:0)

使用 new Date() 定义两个日期。 使用 date2 计算两个日期的时差。 getTime() – 日期 1。获取时间(); 计算编号两个日期之间的天数,将两个日期的时差除以 no。一天中的毫秒数 (10006060*24)