ms: Tiny Millisecond Module by Guillermo Rauch
This code snippet is now available with a GitHub repository: https://github.com/guille/ms.js
I wanted to pass along a simple but useful module that was posted as a Gist to GitHub by Guillermo Rauch. This simple module, available via NPM as ms, provides a simple function for turning a human-readable string into milliseconds.
// Created by milliseconds
/**
# ms.js
No more painful `setTimeout(fn, 60 * 4 * 3 * 2 * 1 * Infinity * NaN * '☃')`.
ms('2d') // 172800000
ms('1.5h') // 5400000
ms('1h') // 3600000
ms('1m') // 60000
ms('5s') // 5000
ms('500ms') // 500
ms('100') // 100
ms(100) // 100
**/
(function (g) {
var r = /(\d*.?\d+)([mshd]+)/
, _ = {}
_.ms = 1;
_.s = 1000;
_.m = _.s * 60;
_.h = _.m * 60;
_.d = _.h * 24;
function ms (s) {
if (s == Number(s)) return Number(s);
r.exec(s.toLowerCase());
return RegExp.$1 * _[RegExp.$2];
}
g.top ? g.ms = ms : module.exports = ms;
})(this);
A very nice little gem by Guiller. Keep this function handy to save yourself from math expressions for time calculations!





Also note this has been accepted in MooTools More: https://github.com/mootools/mootools-more/pull/1098/files
Whats with th ‘☃’ char?
Have I missd something? xD
http://www.fileformat.info/info/unicode/char/2603/index.htm
Great one! Will definitely use this in my projects. Thanks a lot David!
Hi David,
First of all, nice site, I’ve been following you for the past 2 years or so.
Yesterday Guille created a repo so that I could fork the code and make a pull request.
Guille merged today my pull request because it’s a better rewrite overall:
– Smaller footprint
– 2.8x faster
– Passes all unit tests
The repo is here: https://github.com/guille/ms.js
Could you update the article? It’d be great for everyone!