Question: I'm trying to get a difference between two dates in seconds. The logic would be like this :

* set an initial date which would be now;
* set a final date which would be the initial date plus some amount of seconds in future ( let's say 15 for instance )
* get the difference between those two ( the amount of seconds )

The reason why I'm doing it it with dates it's because the final date / time depends on some other variables and it's never the same ( it depends on how fast a user does something ) and I also store the initial date for other things.

I've been trying something like this : 

```
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));

```

The thing is that I never get the right difference. I tried dividing by `24 * 60` which would leave me with the seconds, but I never get it right. So what is it wrong with my logic ? I might be making some stupid mistake as it's quite late, but it bothers me that I cannot get it to work :)

Answer: 
### The Code

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

```

Or even simpler `(endDate - startDate) / 1000` as pointed out in the comments unless you're using typescript.

---

### The explanation

You need to call the `getTime()` method for the `Date` objects, and then simply subtract them and divide by 1000 (since it's originally in milliseconds). As an extra, when you're calling the `getDate()` method, you're in fact getting the day of the month as an integer between 1 and 31 (not zero based) as opposed to the epoch time you'd get from calling the `getTime()` method, representing the number of milliseconds since *January 1st 1970, 00:00*

---

### Rant

Depending on what your date related operations are, you might want to invest in integrating a library such as [date.js](http://www.datejs.com/) or [moment.js](https://momentjs.com/) which make things *so much easier* for the developer, but that's just a matter of personal preference.

For example in [moment.js](https://momentjs.com/) we would do `moment1.diff(moment2, "seconds")` which is beautiful.

---

### Useful docs for this answer

* [Why 1970?](http://en.wikipedia.org/wiki/Unix_time)
* [Date object](http://msdn.microsoft.com/en-us/library/ie/cd9w2te4%28v=vs.94%29.aspx)
* [Date's getTime method](http://msdn.microsoft.com/en-us/library/ie/7hcawkw2%28v=vs.94%29.aspx)
* [Date's getDate method](http://msdn.microsoft.com/en-us/library/ie/217fw5tk%28v=vs.94%29.aspx)
* [Need more accuracy than just seconds?](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now)
Define two dates using new Date().
Calculate the time difference of two dates using date2. getTime() – date1. getTime();
Calculate the no. of days between two dates, divide the time difference of both the dates by no. of milliseconds in a day (1000*60*60\*24)