time.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { isDate, isString, last } from '@antv/util';
  2. import fecha from 'fecha';
  3. import * as fecha1 from 'fecha';
  4. import bisector from './bisector';
  5. var FORMAT_METHOD = 'format';
  6. export function timeFormat(time, mask) {
  7. var method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];
  8. return method(time, mask);
  9. }
  10. /**
  11. * 转换成时间戳
  12. * @param value 时间值
  13. */
  14. export function toTimeStamp(value) {
  15. if (isString(value)) {
  16. if (value.indexOf('T') > 0) {
  17. value = new Date(value).getTime();
  18. }
  19. else {
  20. // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:
  21. // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)
  22. // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)
  23. value = new Date(value.replace(/-/gi, '/')).getTime();
  24. }
  25. }
  26. if (isDate(value)) {
  27. value = value.getTime();
  28. }
  29. return value;
  30. }
  31. var SECOND = 1000;
  32. var MINUTE = 60 * SECOND;
  33. var HOUR = 60 * MINUTE;
  34. var DAY = 24 * HOUR;
  35. var MONTH = DAY * 31;
  36. var YEAR = DAY * 365;
  37. export { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };
  38. var intervals = [
  39. ['HH:mm:ss', SECOND],
  40. ['HH:mm:ss', SECOND * 10],
  41. ['HH:mm:ss', SECOND * 30],
  42. ['HH:mm', MINUTE],
  43. ['HH:mm', MINUTE * 10],
  44. ['HH:mm', MINUTE * 30],
  45. ['HH', HOUR],
  46. ['HH', HOUR * 6],
  47. ['HH', HOUR * 12],
  48. ['YYYY-MM-DD', DAY],
  49. ['YYYY-MM-DD', DAY * 4],
  50. ['YYYY-WW', DAY * 7],
  51. ['YYYY-MM', MONTH],
  52. ['YYYY-MM', MONTH * 4],
  53. ['YYYY-MM', MONTH * 6],
  54. ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题
  55. ];
  56. export function getTickInterval(min, max, tickCount) {
  57. var target = (max - min) / tickCount;
  58. var idx = bisector(function (o) { return o[1]; })(intervals, target) - 1;
  59. var interval = intervals[idx];
  60. if (idx < 0) {
  61. interval = intervals[0];
  62. }
  63. else if (idx >= intervals.length) {
  64. interval = last(intervals);
  65. }
  66. return interval;
  67. }
  68. //# sourceMappingURL=time.js.map