time.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getTimeStart = exports.getTimeScale = exports.getTimeDiff = exports.formatTime = exports.getMask = exports.parseDate = void 0;
  4. var tslib_1 = require("tslib");
  5. var scale = ['year', 'month', 'day', 'hour', 'minute', 'second'];
  6. var masks = ['YYYY', 'MM', 'DD', 'hh', 'mm', 'ss'];
  7. function parseDate(date) {
  8. return date instanceof Date ? date : new Date(date);
  9. }
  10. exports.parseDate = parseDate;
  11. /**
  12. * 生成时间格式化
  13. * @param maxUnit 最大时间单位
  14. * @param minUnit 最小时间单位
  15. */
  16. function getMask(_a) {
  17. var _b = tslib_1.__read(_a, 2), maxUnit = _b[0], minUnit = _b[1];
  18. var startIndex = scale.indexOf(maxUnit);
  19. var endIndex = scale.indexOf(minUnit);
  20. var format = '';
  21. for (var i = startIndex; i <= endIndex; i += 1) {
  22. format += masks[i];
  23. if (i < endIndex) {
  24. var connect = '-';
  25. if (i === 2)
  26. connect = ' ';
  27. else if (i > 2)
  28. connect = ':';
  29. format += connect;
  30. }
  31. }
  32. return format;
  33. }
  34. exports.getMask = getMask;
  35. /**
  36. * 格式化时间
  37. */
  38. function formatTime(date, mask) {
  39. var timeMap = {
  40. YYYY: date.getFullYear(),
  41. MM: date.getMonth() + 1,
  42. DD: date.getDate(),
  43. hh: date.getHours(),
  44. mm: date.getMinutes(),
  45. ss: date.getSeconds(),
  46. };
  47. var strftime = mask;
  48. Object.keys(timeMap).forEach(function (key) {
  49. var val = timeMap[key];
  50. strftime = strftime.replace(key, key === 'YYYY' ? "".concat(val) : "0".concat(val).slice(-2));
  51. });
  52. return strftime;
  53. }
  54. exports.formatTime = formatTime;
  55. /**
  56. * 获取两个时间的差值,单位毫秒
  57. */
  58. function getTimeDiff(a, b) {
  59. return parseDate(a).getTime() - parseDate(b).getTime();
  60. }
  61. exports.getTimeDiff = getTimeDiff;
  62. /**
  63. * 获取时间跨度
  64. */
  65. function getTimeScale(a, b) {
  66. var _a = tslib_1.__read([parseDate(a), parseDate(b)], 2), ma = _a[0], mb = _a[1];
  67. if (ma.getFullYear() !== mb.getFullYear())
  68. return 'year';
  69. if (ma.getMonth() !== mb.getMonth())
  70. return 'month';
  71. if (ma.getDay() !== mb.getDay())
  72. return 'day';
  73. if (ma.getHours() !== mb.getHours())
  74. return 'hour';
  75. if (ma.getMinutes() !== mb.getMinutes())
  76. return 'minute';
  77. return 'second';
  78. }
  79. exports.getTimeScale = getTimeScale;
  80. /**
  81. * 获取给定时间的开始时间
  82. */
  83. function getTimeStart(date, scale) {
  84. var result = new Date(date);
  85. var timeMap = {
  86. year: function (d) {
  87. d.setMonth(0);
  88. d.setHours(0, 0, 0, 0);
  89. },
  90. month: function (d) {
  91. d.setDate(1);
  92. d.setHours(0, 0, 0, 0);
  93. },
  94. day: function (d) { return d.setHours(0, 0, 0, 0); },
  95. hour: function (d) { return d.setMinutes(0, 0, 0); },
  96. minute: function (d) { return d.setSeconds(0, 0); },
  97. second: function (d) { return d.setMilliseconds(0); },
  98. };
  99. timeMap[scale](result);
  100. return formatTime(result, getMask(['year', scale]));
  101. }
  102. exports.getTimeStart = getTimeStart;
  103. //# sourceMappingURL=time.js.map