time.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getTickInterval = exports.YEAR = exports.MONTH = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = exports.toTimeStamp = exports.timeFormat = void 0;
  4. var util_1 = require("@antv/util");
  5. var fecha_1 = require("fecha");
  6. var fecha1 = require("fecha");
  7. var bisector_1 = require("./bisector");
  8. var FORMAT_METHOD = 'format';
  9. function timeFormat(time, mask) {
  10. var method = fecha1[FORMAT_METHOD] || fecha_1.default[FORMAT_METHOD];
  11. return method(time, mask);
  12. }
  13. exports.timeFormat = timeFormat;
  14. /**
  15. * 转换成时间戳
  16. * @param value 时间值
  17. */
  18. function toTimeStamp(value) {
  19. if (util_1.isString(value)) {
  20. if (value.indexOf('T') > 0) {
  21. value = new Date(value).getTime();
  22. }
  23. else {
  24. // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:
  25. // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)
  26. // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)
  27. value = new Date(value.replace(/-/gi, '/')).getTime();
  28. }
  29. }
  30. if (util_1.isDate(value)) {
  31. value = value.getTime();
  32. }
  33. return value;
  34. }
  35. exports.toTimeStamp = toTimeStamp;
  36. var SECOND = 1000;
  37. exports.SECOND = SECOND;
  38. var MINUTE = 60 * SECOND;
  39. exports.MINUTE = MINUTE;
  40. var HOUR = 60 * MINUTE;
  41. exports.HOUR = HOUR;
  42. var DAY = 24 * HOUR;
  43. exports.DAY = DAY;
  44. var MONTH = DAY * 31;
  45. exports.MONTH = MONTH;
  46. var YEAR = DAY * 365;
  47. exports.YEAR = YEAR;
  48. var intervals = [
  49. ['HH:mm:ss', SECOND],
  50. ['HH:mm:ss', SECOND * 10],
  51. ['HH:mm:ss', SECOND * 30],
  52. ['HH:mm', MINUTE],
  53. ['HH:mm', MINUTE * 10],
  54. ['HH:mm', MINUTE * 30],
  55. ['HH', HOUR],
  56. ['HH', HOUR * 6],
  57. ['HH', HOUR * 12],
  58. ['YYYY-MM-DD', DAY],
  59. ['YYYY-MM-DD', DAY * 4],
  60. ['YYYY-WW', DAY * 7],
  61. ['YYYY-MM', MONTH],
  62. ['YYYY-MM', MONTH * 4],
  63. ['YYYY-MM', MONTH * 6],
  64. ['YYYY', DAY * 380],
  65. ];
  66. function getTickInterval(min, max, tickCount) {
  67. var target = (max - min) / tickCount;
  68. var idx = bisector_1.default(function (o) { return o[1]; })(intervals, target) - 1;
  69. var interval = intervals[idx];
  70. if (idx < 0) {
  71. interval = intervals[0];
  72. }
  73. else if (idx >= intervals.length) {
  74. interval = util_1.last(intervals);
  75. }
  76. return interval;
  77. }
  78. exports.getTickInterval = getTickInterval;
  79. //# sourceMappingURL=time.js.map