ms.js 849 B

12345678910111213141516171819202122232425262728293031
  1. var toNum = require('./toNum');
  2. var isStr = require('./isStr');
  3. exports = function(str) {
  4. if (isStr(str)) {
  5. var match = str.match(regStrTime);
  6. if (!match) return 0;
  7. return toNum(match[1]) * factor[match[2] || 'ms'];
  8. } else {
  9. var num = str;
  10. var suffix = 'ms';
  11. for (var i = 0, len = suffixList.length; i < len; i++) {
  12. if (num >= factor[suffixList[i]]) {
  13. suffix = suffixList[i];
  14. break;
  15. }
  16. }
  17. return +(num / factor[suffix]).toFixed(2) + suffix;
  18. }
  19. };
  20. var factor = {
  21. ms: 1,
  22. s: 1000
  23. };
  24. factor.m = factor.s * 60;
  25. factor.h = factor.m * 60;
  26. factor.d = factor.h * 24;
  27. factor.y = factor.d * 365.25;
  28. var suffixList = ['y', 'd', 'h', 'm', 's'];
  29. var regStrTime = /^((?:\d+)?\.?\d+) *(s|m|h|d|y)?$/;
  30. module.exports = exports;