utils.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
  2. //#region ../../packages/components/time-select/src/utils.ts
  3. const parseTime = (time) => {
  4. const values = (time || "").split(":");
  5. if (values.length >= 2) {
  6. let hours = Number.parseInt(values[0], 10);
  7. const minutes = Number.parseInt(values[1], 10);
  8. if (Number.isNaN(hours) || Number.isNaN(minutes)) return null;
  9. const timeUpper = time.toUpperCase();
  10. if (timeUpper.includes("AM") && hours === 12) hours = 0;
  11. else if (timeUpper.includes("PM") && hours !== 12) hours += 12;
  12. return {
  13. hours,
  14. minutes
  15. };
  16. }
  17. return null;
  18. };
  19. const isValidTime = (time) => !!time && time.hours >= 0 && time.minutes >= 0 && !Number.isNaN(time.hours) && !Number.isNaN(time.minutes);
  20. const compareTime = (time1, time2) => {
  21. const value1 = parseTime(time1);
  22. if (!value1) return -1;
  23. const value2 = parseTime(time2);
  24. if (!value2) return -1;
  25. const minutes1 = value1.minutes + value1.hours * 60;
  26. const minutes2 = value2.minutes + value2.hours * 60;
  27. if (minutes1 === minutes2) return 0;
  28. return minutes1 > minutes2 ? 1 : -1;
  29. };
  30. const padTime = (time) => {
  31. return `${time}`.padStart(2, "0");
  32. };
  33. const formatTime = (time) => {
  34. return `${padTime(time.hours)}:${padTime(time.minutes)}`;
  35. };
  36. const nextTime = (time, step) => {
  37. const timeValue = parseTime(time);
  38. if (!timeValue) return "";
  39. const stepValue = parseTime(step);
  40. if (!stepValue) return "";
  41. const next = {
  42. hours: timeValue.hours,
  43. minutes: timeValue.minutes
  44. };
  45. next.minutes += stepValue.minutes;
  46. next.hours += stepValue.hours;
  47. next.hours += Math.floor(next.minutes / 60);
  48. next.minutes = next.minutes % 60;
  49. return formatTime(next);
  50. };
  51. //#endregion
  52. exports.compareTime = compareTime;
  53. exports.formatTime = formatTime;
  54. exports.isValidTime = isValidTime;
  55. exports.nextTime = nextTime;
  56. exports.padTime = padTime;
  57. exports.parseTime = parseTime;
  58. //# sourceMappingURL=utils.js.map