utiller 1.0.396 → 1.0.397

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4597,6 +4597,86 @@ var Utiller = /*#__PURE__*/function () {
4597
4597
  });
4598
4598
  return array;
4599
4599
  }
4600
+
4601
+ /**
4602
+ * 將時間字串解析為物件,回傳 {startDate, startTime, endDate, endTime}
4603
+ *
4604
+ * 支援格式:
4605
+ * 1. '2025/11/10 (一)|13:00-15:00'
4606
+ * => { startDate:'2025/11/10', startTime:'13:00', endDate:'2025/11/10', endTime:'15:00' }
4607
+ *
4608
+ * 2. '2025/11/10 (一) 13:00 - 2025/11/12 (三) 15:00'
4609
+ * => { startDate:'2025/11/10', startTime:'13:00', endDate:'2025/11/12', endTime:'15:00' }
4610
+ *
4611
+ * @param {string} input - 欲解析的時間字串
4612
+ * @returns {{startDate: string, startTime: string, endDate: string, endTime: string}} 解析後的時間物件
4613
+ *
4614
+ * @example
4615
+ * getObjectOfStartEndDateTime('2025/11/10 (一)|13:00-15:00');
4616
+ * // => { startDate:'2025/11/10', startTime:'13:00', endDate:'2025/11/10', endTime:'15:00' }
4617
+ *
4618
+ * @example
4619
+ * getObjectOfStartEndDateTime('2025/11/10 (一) 13:00 - 2025/11/12 (三) 15:00');
4620
+ * // => { startDate:'2025/11/10', startTime:'13:00', endDate:'2025/11/12', endTime:'15:00' }
4621
+ */
4622
+ }, {
4623
+ key: "getObjectOfStartEndDateTime",
4624
+ value: function getObjectOfStartEndDateTime(input) {
4625
+ if (!input || typeof input !== "string") {
4626
+ return {
4627
+ startDate: "",
4628
+ startTime: "",
4629
+ endDate: "",
4630
+ endTime: ""
4631
+ };
4632
+ }
4633
+
4634
+ // 將全形符號與多餘空白轉換為標準形式
4635
+ var cleaned = input.replace(/|/g, " ").replace(/-/g, "-") // 全形破折號轉半形
4636
+ .replace(/\s+/g, " ").trim();
4637
+
4638
+ // 跨日期格式 (例:2025/11/10 13:00 - 2025/11/12 15:00)
4639
+ var crossDatePattern = /(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})/;
4640
+
4641
+ // 同日期格式 (例:2025/11/10 13:00 - 15:00)
4642
+ var sameDatePattern = /(\d{4}\/\d{1,2}\/\d{1,2})(?:\s*\([^)]*\))?\s*(\d{2}:\d{2})\s*-\s*(\d{2}:\d{2})/;
4643
+ var startDate, startTime, endDate, endTime;
4644
+ if (crossDatePattern.test(cleaned)) {
4645
+ var _cleaned$match = cleaned.match(crossDatePattern);
4646
+ var _cleaned$match2 = (0, _slicedToArray2["default"])(_cleaned$match, 5);
4647
+ startDate = _cleaned$match2[1];
4648
+ startTime = _cleaned$match2[2];
4649
+ endDate = _cleaned$match2[3];
4650
+ endTime = _cleaned$match2[4];
4651
+ } else if (sameDatePattern.test(cleaned)) {
4652
+ var _cleaned$match3 = cleaned.match(sameDatePattern);
4653
+ var _cleaned$match4 = (0, _slicedToArray2["default"])(_cleaned$match3, 4);
4654
+ startDate = _cleaned$match4[1];
4655
+ startTime = _cleaned$match4[2];
4656
+ endTime = _cleaned$match4[3];
4657
+ endDate = startDate;
4658
+ } else {
4659
+ return {
4660
+ startDate: "",
4661
+ startTime: "",
4662
+ endDate: "",
4663
+ endTime: ""
4664
+ };
4665
+ }
4666
+
4667
+ // 將日期時間轉為可比較的 Date 物件
4668
+ var start = new Date("".concat(startDate, " ").concat(startTime));
4669
+ var end = new Date("".concat(endDate, " ").concat(endTime));
4670
+ if (end < start) {
4671
+ throw new Error("End time cannot be earlier than start time: ".concat(input));
4672
+ }
4673
+ return {
4674
+ startDate: startDate,
4675
+ startTime: startTime,
4676
+ endDate: endDate,
4677
+ endTime: endTime
4678
+ };
4679
+ }
4600
4680
  }, {
4601
4681
  key: "getFilteredHeraPeriods",
4602
4682
  value:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utiller",
3
- "version": "1.0.396",
3
+ "version": "1.0.397",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "configerer": "^1.0.23",
14
- "utiller": "^1.0.395",
14
+ "utiller": "^1.0.396",
15
15
  "linepayer": "^1.0.15",
16
16
  "databazer": "^1.0.17",
17
17
  "lodash": "^4.17.20",