utils.mjs 1.5 KB

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