208

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

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

4

8 回答 8

411

编码

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")的很漂亮。


此答案的有用文档

于 2012-12-15T17:51:56.357 回答
10

您可以new Date().getTime()用于获取时间戳。然后您可以计算 end 和 start 之间的差异,最后将时间戳转换mss.

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

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);
于 2017-09-19T15:28:19.983 回答
7
<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>
于 2015-07-22T11:46:48.753 回答
5

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

 let startDate = new Date()
 let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
 let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);
于 2021-01-28T07:05:42.680 回答
3

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

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 );
于 2018-06-27T07:43:03.947 回答
1

尝试使用高级编程语言的专用函数。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);
于 2017-11-02T05:00:44.110 回答
0

使用momentjs从现在到10分钟后的时差

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;
于 2018-05-16T16:48:58.700 回答
0

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

于 2021-01-12T04:03:24.140 回答