Saranya - 1 year ago 53

Javascript Question

How to find the difference between two dates?

Answer Source

By using the Date object and its milliseconds value, differences can be calculated:

```
var a = new Date(); // Current date now.
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // Start of 2010.
var d = (b-a); // Difference in milliseconds.
```

You can get the number of seconds (as a integer/whole number) by dividing the milliseconds by 1000 to convert it to seconds then converting the result to an integer (this removes the fractional part representing the milliseconds):

```
var seconds = parseInt((b-a)/1000);
```

You could then get whole `minutes`

by dividing `seconds`

by 60 and converting it to an integer, then `hours`

by dividing `minutes`

by 60 and converting it to an integer, then longer time units in the same way. From this, a function to get the maximum whole amount of a time unit in the value of a lower unit and the remainder lower unit can be created:

```
function get_whole_values(base_value, time_fractions) {
time_data = [base_value];
for (i = 0; i < time_fractions.length; i++) {
time_data.push(parseInt(time_data[i]/time_fractions[i]));
time_data[i] = time_data[i] % time_fractions[i];
}; return time_data;
};
// Input parameters below: base value of 72000 milliseconds, time fractions are
// 1000 (amount of milliseconds in a second) and 60 (amount of seconds in a minute).
console.log(get_whole_values(72000, [1000, 60]));
// -> [0,12,1] # 0 whole milliseconds, 12 whole seconds, 1 whole minute.
```

If you're wondering what the input parameters provided above for the second Date object are, see their names below:

```
new Date(<year>, <month>, <day>, <hours>, <minutes>, <seconds>, <milliseconds>);
```

As noted in the comments of this solution, you don't necessarily need to provide all these values unless they're necessary for the date you wish to represent.