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.
- package/lib/utiller/index.js +80 -0
- package/package.json +1 -1
- package/template/sample.package.json +1 -1
package/lib/utiller/index.js
CHANGED
|
@@ -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