
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
Calculate a time difference in several time units.
$ npm install --save timediff
var timediff = require('timediff');
timediff('2015-01-01', '2018-05-02 02:15:10.777', 'YDHms');
// => { years: 3, days: 121, hours: 2, minutes: 15, milliseconds: 10777 }
bower install --save timediff
<code id="result"></code>
<script src="bower_components/moment/moment.js"></script>
<script src="bower_components/timediff/timediff.js"></script>
<script>
(function showResult () {
var result = timediff('2015-01-01', '2018-05-02 02:15:10.777', 'YDHms');
console.log(result);
document.getElementById('result').innerHTML = JSON.stringify(result);
})();
</script>
$ npm install --global timediff
$ timediff --help
Usage: timediff <start> <end> [<units>]
Example:
timediff 2013-12-01 '2015-04-20 12:20:10.342' YMWDHmSs
years: 1
months: 4
weeks: 2
days: 5
hours: 12
minutes: 20
seconds: 10
milliseconds: 342
timediff 1989-11-09 now YD
years: 25
days: 71
// return the timediff in all possible units
timediff(new Date(2015, 1, 1), new Date('2018-05-02 02:15:10'));
// => { years: 3, months: 3, weeks: 0, days: 1, hours: 2, minutes: 15, seconds: 10, milliseconds: 0 }
// return the timediff only in years, weeks, days hours and seconds
timediff(new Date(2015, 1, 1), new Date('2018-05-02 02:15:10.777'), 'YWDHS');
// => { years: 3, weeks: 12, days: 6, hours: 2, seconds: 910 }
// return the timediff only in month, minutes seconds, and milliseconds
timediff(new Date(2015, 1, 1), new Date('2018-05-02 02:15:10.777'), 'MmSs');
// => { months: 39, minutes: 1575, seconds: 10, milliseconds: 777 }
// provide the result to a callback and return the result of the callback
timediff('1969-06-09T06:09:06.069Z', new Date(), function (result) {
var strings = [];
for(var key in result) {
strings.push(result[key] + ' ' + key);
}
return 'age: ' + strings.join(', ');
});
// => 'age: 45 years, 7 months, 0 weeks, 6 days, 5 hours, 54 minutes, 5 seconds, 257 milliseconds'
// combine all options
var christmas = new Date(); christmas.setMonth(11); christmas.setDate(24);
timediff(new Date(), christmas, {
units: 'MWD',
returnZeros: false,
callback: function (result) {return 'Time until christmas: ' + JSON.stringify(result);}
});
// => 'Time until christmas: {"months":11,"weeks":1,"days":1}'
Return the time difference between start and end. Use only the units specified in options.
Return:
{
years: 0,
months: 0,
weeks: 0,
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0
}
Required
Type: string | Date | moment
Type: object | string | function
Default:
{
units: {
years:true,
months: true,
weeks: true,
days: true,
hours: true,
minutes: true,
seconds: true,
milliseconds: true
},
returnZeros: true,
callback: null
}
Use timediff(start, end, unitString) (where unitString is a string) as a shortcut for
timediff(start, end, {units: unitString}).
Use timediff(start, end, callback) (where callback is a function) as a shortcut for
timediff(start, end, {callback: callback}).
Type: object | string
Can be an object as given above or a string containing any of YMWDHmSs.
If a letter exists in the string the corresponding unit is used in
the result.
| letter | result uses |
|---|---|
| Y | years |
| M | months |
| W | weeks |
| D | days |
| H | hours |
| m | minutes |
| S | seconds |
| s | milliseconds |
Type: boolean
If true result can contain fields that are 0, if false they are removed.
Type: function
Function that is called with the result of timediff as the first parameter. timediff returns the return value of this callback.
MIT copyright [Marco Taubmann]
FAQs
Calculate a time difference in several time units.
The npm package timediff receives a total of 959 weekly downloads. As such, timediff popularity was classified as not popular.
We found that timediff demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.