durationFormat.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. var toInt = require('./toInt');
  2. var lpad = require('./lpad');
  3. var toStr = require('./toStr');
  4. var floor = Math.floor;
  5. exports = function(duration) {
  6. var mask =
  7. arguments.length > 1 && arguments[1] !== undefined
  8. ? arguments[1]
  9. : 'hh:mm:ss';
  10. duration = toInt(duration);
  11. var d = floor(duration / 86400000);
  12. var h = floor(duration / 3600000) % 24;
  13. var m = floor(duration / 60000) % 60;
  14. var s = floor(duration / 1000) % 60;
  15. var l = floor(duration) % 1000;
  16. var flags = {
  17. d: d,
  18. h: h,
  19. hh: padZero(h),
  20. m: m,
  21. mm: padZero(m),
  22. s: s,
  23. ss: padZero(s),
  24. l: l,
  25. ll: padZero(l, 3)
  26. };
  27. return mask.replace(regToken, function(match) {
  28. if (match in flags) return flags[match];
  29. return match.slice(1, match.length - 1);
  30. });
  31. };
  32. var padZero = function(str) {
  33. var len =
  34. arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
  35. return lpad(toStr(str), len, '0');
  36. };
  37. var regToken = /d{1,2}|h{1,2}|m{1,2}|s{1,2}|l{1,2}|"[^"]*"|'[^']*'/g;
  38. module.exports = exports;