OpenTimeUtil.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* eslint-disable class-methods-use-this */
  2. /* eslint-disable no-underscore-dangle */
  3. import moment from "moment";
  4. export default class OpenTimeUtil {
  5. constructor(startTime, endTime, week, weekWords) {
  6. this.startTime = startTime || "08:00:00";
  7. this.endTime = endTime || "23:00:00";
  8. this.week = week || "";
  9. this.weekWords = weekWords || {};
  10. if (weekWords) {
  11. this.valueKey = Object.keys(weekWords);
  12. }
  13. this.selectStart = this.getTimeSelectValue(this.startTime);
  14. this.selectEnd = this.getTimeSelectValue(this.endTime);
  15. }
  16. getStartTimeStr() {
  17. return moment(this.startTime, "HH:mm:ss").format("HH:mm");
  18. }
  19. getEndTimeStr() {
  20. return moment(this.endTime, "HH:mm:ss").format("HH:mm");
  21. }
  22. getWeekStr() {
  23. let _weeks = this.week.split(",");
  24. if (_weeks.length === 7) {
  25. return this.weekWords.all;
  26. }
  27. _weeks = _weeks.map(item => {
  28. return this.weekWords[item];
  29. });
  30. return _weeks.join(",");
  31. }
  32. getTimeStr() {
  33. return `${this.getStartTimeStr()}~${this.getEndTimeStr()}`;
  34. }
  35. getShowStr() {
  36. return `${this.getStartTimeStr()}~${this.getEndTimeStr()} ${this.getWeekStr()}`;
  37. }
  38. setStartTime(startTime) {
  39. this.startTime = moment(startTime, "HH:mm").format("HH:mm:ss");
  40. }
  41. setEndTime(endTime) {
  42. this.endTime = moment(endTime, "HH:mm").format("HH:mm:ss");
  43. }
  44. setWeek(week) {
  45. this.week = week || [];
  46. }
  47. getWeek() {
  48. return this.week.split(",").filter(item => {
  49. return this.valueKey ? this.valueKey.includes(item) : false;
  50. });
  51. }
  52. setWeekWords(weekWords) {
  53. this.weekWords = weekWords || {};
  54. }
  55. getTimeSelectValue(time) {
  56. const _time = moment(time, "HH:mm:ss").format("H:m");
  57. return _time.split(":").map(item => {
  58. return Number(item);
  59. });
  60. }
  61. }