utiller 1.0.321 → 1.0.323
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 +108 -49
- package/package.json +2 -2
- package/template/sample.package.json +1 -1
package/lib/utiller/index.js
CHANGED
|
@@ -17,8 +17,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
17
17
|
var _cryptoJs = _interopRequireDefault(require("crypto-js"));
|
|
18
18
|
var _configerer = require("configerer");
|
|
19
19
|
var _exceptioner = _interopRequireDefault(require("../exceptioner"));
|
|
20
|
-
var
|
|
21
|
-
require("moment-timezone");
|
|
20
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
22
21
|
var _uuid = require("uuid");
|
|
23
22
|
var _words = require("../words");
|
|
24
23
|
var _nodeHtmlParser = require("node-html-parser");
|
|
@@ -223,7 +222,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
223
222
|
* const date = '2024-07-25';
|
|
224
223
|
* console.log(convertDateToTimestamp(date)); // Outputs the timestamp for 2024-07-25*/
|
|
225
224
|
(0, _defineProperty2["default"])(this, "convertDateToTimestamp", function (date) {
|
|
226
|
-
return (0,
|
|
225
|
+
return (0, _momentTimezone["default"])(date).valueOf(); // valueOf() returns the timestamp in milliseconds
|
|
227
226
|
});
|
|
228
227
|
/** // 示例函數來測試運行時間
|
|
229
228
|
async function exampleFunction() {
|
|
@@ -263,7 +262,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
263
262
|
// 結束計時
|
|
264
263
|
endTime = Date.now(); // 計算總運行時間(毫秒)
|
|
265
264
|
durationInMilliseconds = endTime - startTime; // 使用 moment.duration 格式化為 hh:mm:ss.SSS
|
|
266
|
-
duration =
|
|
265
|
+
duration = _momentTimezone["default"].duration(durationInMilliseconds, "milliseconds");
|
|
267
266
|
hours = Math.floor(duration.asHours());
|
|
268
267
|
minutes = duration.minutes();
|
|
269
268
|
seconds = duration.seconds();
|
|
@@ -417,7 +416,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
417
416
|
key: "setLocaleOfMoment",
|
|
418
417
|
value: function setLocaleOfMoment() {
|
|
419
418
|
var locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "en";
|
|
420
|
-
|
|
419
|
+
_momentTimezone["default"].locale(locale);
|
|
421
420
|
}
|
|
422
421
|
}, {
|
|
423
422
|
key: "getUuidOfV4",
|
|
@@ -1692,55 +1691,55 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1692
1691
|
}, {
|
|
1693
1692
|
key: "getTodayTimeFormat",
|
|
1694
1693
|
value: function getTodayTimeFormat(ts) {
|
|
1695
|
-
return (0,
|
|
1694
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY-MM-DD");
|
|
1696
1695
|
}
|
|
1697
1696
|
}, {
|
|
1698
1697
|
key: "getCustomFormatOfDatePresent",
|
|
1699
1698
|
value: function getCustomFormatOfDatePresent(ts) {
|
|
1700
1699
|
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "YY/MM";
|
|
1701
|
-
return (0,
|
|
1700
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format(format);
|
|
1702
1701
|
}
|
|
1703
1702
|
}, {
|
|
1704
1703
|
key: "getSimpleDateYYMMDDFormat",
|
|
1705
1704
|
value: function getSimpleDateYYMMDDFormat(ts) {
|
|
1706
|
-
return (0,
|
|
1705
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YY/MM/DD");
|
|
1707
1706
|
}
|
|
1708
1707
|
}, {
|
|
1709
1708
|
key: "getSimpleTimeYYMMDDHHmmFormat",
|
|
1710
1709
|
value: function getSimpleTimeYYMMDDHHmmFormat(ts) {
|
|
1711
|
-
return (0,
|
|
1710
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YY/MM/DD HH:mm");
|
|
1712
1711
|
}
|
|
1713
1712
|
}, {
|
|
1714
1713
|
key: "getECPayCurrentTimeFormat",
|
|
1715
1714
|
value: function getECPayCurrentTimeFormat(ts) {
|
|
1716
|
-
return (0,
|
|
1715
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss");
|
|
1717
1716
|
}
|
|
1718
1717
|
}, {
|
|
1719
1718
|
key: "getCurrentTimeFormatV2",
|
|
1720
1719
|
value: function getCurrentTimeFormatV2(ts) {
|
|
1721
|
-
return (0,
|
|
1720
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss");
|
|
1722
1721
|
}
|
|
1723
1722
|
}, {
|
|
1724
1723
|
key: "getCurrentTimeFormatYMDHM",
|
|
1725
1724
|
value: function getCurrentTimeFormatYMDHM(ts) {
|
|
1726
|
-
return (0,
|
|
1725
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm");
|
|
1727
1726
|
}
|
|
1728
1727
|
}, {
|
|
1729
1728
|
key: "getCurrentTimeFormatYMDHMS",
|
|
1730
1729
|
value: function getCurrentTimeFormatYMDHMS(ts) {
|
|
1731
|
-
return (0,
|
|
1730
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY/MM/DD HH:mm:ss");
|
|
1732
1731
|
}
|
|
1733
1732
|
|
|
1734
1733
|
/** 取得 YYY-MM-DD-HH-mm-ss */
|
|
1735
1734
|
}, {
|
|
1736
1735
|
key: "getCurrentTimeFormat",
|
|
1737
1736
|
value: function getCurrentTimeFormat(ts) {
|
|
1738
|
-
return (0,
|
|
1737
|
+
return (0, _momentTimezone["default"])(ts ? ts : this.getCurrentTimeStamp()).format("YYYY-MM-DD-HH-mm-ss");
|
|
1739
1738
|
}
|
|
1740
1739
|
}, {
|
|
1741
1740
|
key: "getCurrentMillionSecTimeFormat",
|
|
1742
1741
|
value: function getCurrentMillionSecTimeFormat(ts) {
|
|
1743
|
-
return (0,
|
|
1742
|
+
return (0, _momentTimezone["default"])(ts ? ts : undefined).format("YYYY-MM-DD-HH-mm-ss-SSS");
|
|
1744
1743
|
}
|
|
1745
1744
|
}, {
|
|
1746
1745
|
key: "isBetweenTimeStamp",
|
|
@@ -1748,21 +1747,46 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1748
1747
|
var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
|
|
1749
1748
|
var min = arguments.length > 1 ? arguments[1] : undefined;
|
|
1750
1749
|
var max = arguments.length > 2 ? arguments[2] : undefined;
|
|
1751
|
-
return (0,
|
|
1750
|
+
return (0, _momentTimezone["default"])(target).isBetween(min, max);
|
|
1752
1751
|
}
|
|
1753
1752
|
}, {
|
|
1754
1753
|
key: "isBeforeTimeStamp",
|
|
1755
1754
|
value: function isBeforeTimeStamp() {
|
|
1756
1755
|
var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
|
|
1757
1756
|
var time = arguments.length > 1 ? arguments[1] : undefined;
|
|
1758
|
-
return (0,
|
|
1757
|
+
return (0, _momentTimezone["default"])(target).isBefore(time);
|
|
1759
1758
|
}
|
|
1760
1759
|
}, {
|
|
1761
1760
|
key: "isAfterTimeStamp",
|
|
1762
1761
|
value: function isAfterTimeStamp() {
|
|
1763
1762
|
var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
|
|
1764
1763
|
var time = arguments.length > 1 ? arguments[1] : undefined;
|
|
1765
|
-
return (0,
|
|
1764
|
+
return (0, _momentTimezone["default"])(target).isAfter(time);
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
/**
|
|
1768
|
+
* 根據地區語系與時區輸出 yyyy/MM/dd hh:mm 時間字串
|
|
1769
|
+
* @param {Date | number | string} ts - 時間戳記、日期物件或字串
|
|
1770
|
+
* @param {string} location - 語系地區代碼(如 'zh-TW'、'en-US')
|
|
1771
|
+
* @param {string} timezone - 時區(預設為 'Asia/Taipei')
|
|
1772
|
+
* @param {boolean} use24Hour - 是否使用 24 小時制(預設 true)
|
|
1773
|
+
* @returns {string}
|
|
1774
|
+
*/
|
|
1775
|
+
}, {
|
|
1776
|
+
key: "formatTimeByLocale",
|
|
1777
|
+
value: function formatTimeByLocale(ts) {
|
|
1778
|
+
var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "zh-TW";
|
|
1779
|
+
var timezone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "Asia/Taipei";
|
|
1780
|
+
var use24Hour = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
1781
|
+
// 設定 moment 語系
|
|
1782
|
+
_momentTimezone["default"].locale(location);
|
|
1783
|
+
|
|
1784
|
+
// 轉換時區
|
|
1785
|
+
var m = (0, _momentTimezone["default"])(ts).tz(timezone);
|
|
1786
|
+
|
|
1787
|
+
// 格式化字串
|
|
1788
|
+
var formatStr = use24Hour ? "YYYY/MM/DD HH:mm" : "YYYY/MM/DD hh:mm A";
|
|
1789
|
+
return m.format(formatStr);
|
|
1766
1790
|
}
|
|
1767
1791
|
|
|
1768
1792
|
/** 獲得 幾天後的timestamp 的概念 {months: 2,days:3} =>
|
|
@@ -1781,7 +1805,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1781
1805
|
hours: 0
|
|
1782
1806
|
};
|
|
1783
1807
|
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getCurrentTimeStamp();
|
|
1784
|
-
var base = (0,
|
|
1808
|
+
var base = (0, _momentTimezone["default"])(target);
|
|
1785
1809
|
for (var each in param) {
|
|
1786
1810
|
var number = param[each];
|
|
1787
1811
|
var unit = each;
|
|
@@ -1807,7 +1831,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1807
1831
|
key: "getTimeStampFromSpecificFormat",
|
|
1808
1832
|
value: function getTimeStampFromSpecificFormat(string) {
|
|
1809
1833
|
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "YYYY/MM/DD HH:mm:ss";
|
|
1810
|
-
return (0,
|
|
1834
|
+
return (0, _momentTimezone["default"])(string, format).valueOf();
|
|
1811
1835
|
}
|
|
1812
1836
|
}, {
|
|
1813
1837
|
key: "getTimeStampFromECPayStringFormat",
|
|
@@ -1819,42 +1843,42 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1819
1843
|
}, {
|
|
1820
1844
|
key: "getTimeFormatOfDurationToMillionSecond",
|
|
1821
1845
|
value: function getTimeFormatOfDurationToMillionSecond(duration) {
|
|
1822
|
-
return
|
|
1846
|
+
return _momentTimezone["default"].utc(duration).format("HH小時mm分鐘ss秒SSS");
|
|
1823
1847
|
}
|
|
1824
1848
|
|
|
1825
1849
|
/** duration是兩個timestamp相減,把duration time-stamp 轉成 02:13,moment.utc 就是不會加八小時啦幹 */
|
|
1826
1850
|
}, {
|
|
1827
1851
|
key: "getTimeFormatOfDurationToSecond",
|
|
1828
1852
|
value: function getTimeFormatOfDurationToSecond(duration) {
|
|
1829
|
-
return
|
|
1853
|
+
return _momentTimezone["default"].utc(duration).format("HH小時mm分鐘ss秒");
|
|
1830
1854
|
}
|
|
1831
1855
|
|
|
1832
1856
|
/** duration是兩個timestamp相減,把duration time-stamp 轉成 02:13,moment.utc 就是不會加八小時啦幹 , 為什麼對多1天 超怪 */
|
|
1833
1857
|
}, {
|
|
1834
1858
|
key: "getTimeFormatOfDurationToDay",
|
|
1835
1859
|
value: function getTimeFormatOfDurationToDay(duration) {
|
|
1836
|
-
return
|
|
1860
|
+
return _momentTimezone["default"].utc(duration).format("DD天HH小時mm分鐘ss秒");
|
|
1837
1861
|
}
|
|
1838
1862
|
}, {
|
|
1839
1863
|
key: "getChineseTimeFormat",
|
|
1840
1864
|
value: function getChineseTimeFormat(ts) {
|
|
1841
|
-
|
|
1842
|
-
return (0,
|
|
1865
|
+
_momentTimezone["default"].locale("zh-TW");
|
|
1866
|
+
return (0, _momentTimezone["default"])(ts).format("LLLL");
|
|
1843
1867
|
}
|
|
1844
1868
|
}, {
|
|
1845
1869
|
key: "getMinuteFormatOfDuration",
|
|
1846
1870
|
value: function getMinuteFormatOfDuration(ds) {
|
|
1847
|
-
return
|
|
1871
|
+
return _momentTimezone["default"].duration(ds).asMinutes();
|
|
1848
1872
|
}
|
|
1849
1873
|
}, {
|
|
1850
1874
|
key: "getSecondFormatOfDuration",
|
|
1851
1875
|
value: function getSecondFormatOfDuration(ds) {
|
|
1852
|
-
return
|
|
1876
|
+
return _momentTimezone["default"].duration(ds).asSeconds();
|
|
1853
1877
|
}
|
|
1854
1878
|
}, {
|
|
1855
1879
|
key: "getDayFormatOfDuration",
|
|
1856
1880
|
value: function getDayFormatOfDuration(ds) {
|
|
1857
|
-
return
|
|
1881
|
+
return _momentTimezone["default"].duration(ds).asDays();
|
|
1858
1882
|
}
|
|
1859
1883
|
|
|
1860
1884
|
/** param可以是timeStamp,也可是date,或是string
|
|
@@ -1867,7 +1891,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1867
1891
|
key: "getDurationOfMillionSec",
|
|
1868
1892
|
value: function getDurationOfMillionSec(dateOrTimeStamp) {
|
|
1869
1893
|
var currentTimestamp = this.getCurrentTimeStamp();
|
|
1870
|
-
var targetTimeStamp = (0,
|
|
1894
|
+
var targetTimeStamp = (0, _momentTimezone["default"])(dateOrTimeStamp).valueOf();
|
|
1871
1895
|
var queue = _lodash["default"].sortBy([{
|
|
1872
1896
|
ts: currentTimestamp
|
|
1873
1897
|
}, {
|
|
@@ -1877,16 +1901,16 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
1877
1901
|
}).map(function (each) {
|
|
1878
1902
|
return each.ts;
|
|
1879
1903
|
});
|
|
1880
|
-
var after = (0,
|
|
1881
|
-
var before = (0,
|
|
1882
|
-
var duration =
|
|
1904
|
+
var after = (0, _momentTimezone["default"])(queue.pop());
|
|
1905
|
+
var before = (0, _momentTimezone["default"])(queue.shift()); // another date
|
|
1906
|
+
var duration = _momentTimezone["default"].duration(after.diff(before));
|
|
1883
1907
|
var ms = duration.asMilliseconds();
|
|
1884
1908
|
return ms;
|
|
1885
1909
|
}
|
|
1886
1910
|
}, {
|
|
1887
1911
|
key: "getCurrentTimeStamp",
|
|
1888
1912
|
value: function getCurrentTimeStamp() {
|
|
1889
|
-
return (0,
|
|
1913
|
+
return (0, _momentTimezone["default"])().valueOf();
|
|
1890
1914
|
}
|
|
1891
1915
|
}, {
|
|
1892
1916
|
key: "isStringContainInLines",
|
|
@@ -2067,7 +2091,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
2067
2091
|
}, {
|
|
2068
2092
|
key: "enrichZhTw",
|
|
2069
2093
|
value: function enrichZhTw() {
|
|
2070
|
-
|
|
2094
|
+
_momentTimezone["default"].locale("zh-tw", {
|
|
2071
2095
|
months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
|
|
2072
2096
|
monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
|
|
2073
2097
|
weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
|
|
@@ -2128,13 +2152,13 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
2128
2152
|
},
|
|
2129
2153
|
nextWeek: function nextWeek() {
|
|
2130
2154
|
var startOfWeek, prefix;
|
|
2131
|
-
startOfWeek = (0,
|
|
2155
|
+
startOfWeek = (0, _momentTimezone["default"])().startOf("week");
|
|
2132
2156
|
prefix = this.diff(startOfWeek, "days") >= 7 ? "[下]" : "[本]";
|
|
2133
2157
|
return this.minutes() === 0 ? prefix + "dddA點整" : prefix + "dddAh點mm";
|
|
2134
2158
|
},
|
|
2135
2159
|
lastWeek: function lastWeek() {
|
|
2136
2160
|
var startOfWeek, prefix;
|
|
2137
|
-
startOfWeek = (0,
|
|
2161
|
+
startOfWeek = (0, _momentTimezone["default"])().startOf("week");
|
|
2138
2162
|
prefix = this.unix() < startOfWeek.unix() ? "[上]" : "[本]";
|
|
2139
2163
|
return this.minutes() === 0 ? prefix + "dddAh點整" : prefix + "dddAh點mm";
|
|
2140
2164
|
},
|
|
@@ -2919,7 +2943,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
2919
2943
|
key: "isOverSpecificAge",
|
|
2920
2944
|
value: function isOverSpecificAge(birthDate) {
|
|
2921
2945
|
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 18;
|
|
2922
|
-
var age = (0,
|
|
2946
|
+
var age = (0, _momentTimezone["default"])().diff((0, _momentTimezone["default"])(birthDate, "YYYY-MM-DD"), "years");
|
|
2923
2947
|
return age >= target;
|
|
2924
2948
|
}
|
|
2925
2949
|
}, {
|
|
@@ -2993,7 +3017,7 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
2993
3017
|
valid: false,
|
|
2994
3018
|
message: "\u51FA\u751F\u65E5\u671F\u683C\u5F0F\u4E0D\u6B63\u78BA"
|
|
2995
3019
|
};
|
|
2996
|
-
var now = (0,
|
|
3020
|
+
var now = (0, _momentTimezone["default"])();
|
|
2997
3021
|
var age = now.diff(birthday, "years");
|
|
2998
3022
|
if (age < ageOfQualify) {
|
|
2999
3023
|
return {
|
|
@@ -3027,8 +3051,8 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
3027
3051
|
key: "getStringOfFormatTimestampRange",
|
|
3028
3052
|
value: function getStringOfFormatTimestampRange(startTimestamp, endTimestamp) {
|
|
3029
3053
|
// 使用 moment 解析 timestamp
|
|
3030
|
-
var startDate = (0,
|
|
3031
|
-
var endDate = (0,
|
|
3054
|
+
var startDate = (0, _momentTimezone["default"])(startTimestamp);
|
|
3055
|
+
var endDate = (0, _momentTimezone["default"])(endTimestamp);
|
|
3032
3056
|
|
|
3033
3057
|
// 格式化日期為 YY/MM/DD 格式
|
|
3034
3058
|
var formatDate = function formatDate(date) {
|
|
@@ -3063,8 +3087,8 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
3063
3087
|
key: "getStringOfCalculateClassTime",
|
|
3064
3088
|
value: function getStringOfCalculateClassTime(startTimestamp, endTimestamp, weeklyMinutes) {
|
|
3065
3089
|
// 使用 moment 解析 timestamp
|
|
3066
|
-
var startDate = (0,
|
|
3067
|
-
var endDate = (0,
|
|
3090
|
+
var startDate = (0, _momentTimezone["default"])(startTimestamp);
|
|
3091
|
+
var endDate = (0, _momentTimezone["default"])(endTimestamp);
|
|
3068
3092
|
|
|
3069
3093
|
// 計算時間範圍內的天數
|
|
3070
3094
|
var totalDays = endDate.diff(startDate, "days") + 1; // 包含起始日
|
|
@@ -3096,15 +3120,15 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
3096
3120
|
value: function getNumberOfPeriodMinute(startTimestamp, endTimestamp) {
|
|
3097
3121
|
// 使用 moment 解析 timestamp
|
|
3098
3122
|
// 使用 moment 解析 timestamp 並只取時間的 hh:mm 部分
|
|
3099
|
-
var startTime = (0,
|
|
3100
|
-
var endTime = (0,
|
|
3123
|
+
var startTime = (0, _momentTimezone["default"])(startTimestamp).format("HH:mm");
|
|
3124
|
+
var endTime = (0, _momentTimezone["default"])(endTimestamp).format("HH:mm");
|
|
3101
3125
|
|
|
3102
3126
|
// 使用 moment 重新將 hh:mm 轉換為完整的日期對象
|
|
3103
|
-
var startDate = (0,
|
|
3104
|
-
var endDate = (0,
|
|
3127
|
+
var startDate = (0, _momentTimezone["default"])(startTime, "HH:mm");
|
|
3128
|
+
var endDate = (0, _momentTimezone["default"])(endTime, "HH:mm");
|
|
3105
3129
|
|
|
3106
3130
|
// 計算兩個時間之間的分鐘差距
|
|
3107
|
-
var durationInMinutes =
|
|
3131
|
+
var durationInMinutes = _momentTimezone["default"].duration(endDate.diff(startDate)).asMinutes();
|
|
3108
3132
|
return durationInMinutes;
|
|
3109
3133
|
}
|
|
3110
3134
|
}, {
|
|
@@ -3133,8 +3157,8 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
3133
3157
|
}
|
|
3134
3158
|
|
|
3135
3159
|
// 使用 moment 將 timestamp 轉換為只保留 hh:mm 的格式
|
|
3136
|
-
var startTime = (0,
|
|
3137
|
-
var endTime = (0,
|
|
3160
|
+
var startTime = (0, _momentTimezone["default"])(startTimestamp).format("HH:mm");
|
|
3161
|
+
var endTime = (0, _momentTimezone["default"])(endTimestamp).format("HH:mm");
|
|
3138
3162
|
|
|
3139
3163
|
// 組合結果並返回
|
|
3140
3164
|
return "".concat(daysOfWeek[day], " ").concat(startTime, "-").concat(endTime);
|
|
@@ -3596,6 +3620,41 @@ var Utiller = /*#__PURE__*/function () {
|
|
|
3596
3620
|
return predict(value);
|
|
3597
3621
|
}));
|
|
3598
3622
|
}
|
|
3623
|
+
|
|
3624
|
+
/**
|
|
3625
|
+
*
|
|
3626
|
+
const array = [
|
|
3627
|
+
{ serial: 'A023' },
|
|
3628
|
+
{ serial: 'Z001' },
|
|
3629
|
+
{ serial: 'C002' },
|
|
3630
|
+
{ serial: 'G123' },
|
|
3631
|
+
{ serial: 'A001' },
|
|
3632
|
+
{ serial: 'A999' }
|
|
3633
|
+
];
|
|
3634
|
+
mutateBy(array, (item) => {
|
|
3635
|
+
const serial = item.serial;
|
|
3636
|
+
const match = serial.match(/^([A-Z]+)(\d+)$/i);
|
|
3637
|
+
const [letter, number] = match ? [match[1], parseInt(match[2], 10)] : [serial, 0];
|
|
3638
|
+
return [letter, number]; // 多層排序:先字母,再數字
|
|
3639
|
+
});
|
|
3640
|
+
*
|
|
3641
|
+
* [ { serial: 'A001' }, { serial: 'A023' }, { serial: 'A999' }, { serial: 'C002' }, { serial: 'G123' }, { serial: 'Z001' } ]
|
|
3642
|
+
*
|
|
3643
|
+
*
|
|
3644
|
+
* 通用的排序變異工具:依照 predict 提供的排序 key 對 array 進行原地排序(mutated)
|
|
3645
|
+
*
|
|
3646
|
+
* @param {Array} array - 要排序的陣列(會就地變異)
|
|
3647
|
+
* @param {Function} predict - 回傳排序 key(可以是陣列以支援多層排序)
|
|
3648
|
+
*/
|
|
3649
|
+
}, {
|
|
3650
|
+
key: "mutateBy",
|
|
3651
|
+
value: function mutateBy(array) {
|
|
3652
|
+
var predict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (item) {
|
|
3653
|
+
return item;
|
|
3654
|
+
};
|
|
3655
|
+
var sorted = _lodash["default"].sortBy(array, predict);
|
|
3656
|
+
array.splice.apply(array, [0, array.length].concat((0, _toConsumableArray2["default"])(sorted)));
|
|
3657
|
+
}
|
|
3599
3658
|
}]);
|
|
3600
3659
|
}();
|
|
3601
3660
|
var _default = exports["default"] = Utiller;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "utiller",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.323",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"fs-extra": "^9.1.0",
|
|
24
24
|
"lodash": "^4.17.20",
|
|
25
25
|
"moment": "^2.29.1",
|
|
26
|
-
"moment-timezone": "^0.5.
|
|
26
|
+
"moment-timezone": "^0.5.48",
|
|
27
27
|
"node-html-parser": "^7.0.1",
|
|
28
28
|
"pdf-parse": "^1.1.1",
|
|
29
29
|
"prompt": "^1.1.0",
|