@planarcat/js-toolkit 1.7.0 → 1.7.9
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/README.md +48 -32
- package/dist/date/compileDateFormatter.d.ts.map +1 -1
- package/dist/date/compileDateFormatter.js +4 -5
- package/dist/date/compileDateFormatter.js.map +1 -1
- package/dist/date/formatDate.d.ts.map +1 -1
- package/dist/date/formatDate.js.map +1 -1
- package/dist/date/regularDateFormatter.d.ts.map +1 -1
- package/dist/date/regularDateFormatter.js +14 -11
- package/dist/date/regularDateFormatter.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/date.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/constants.d.ts +10 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +10 -2
- package/dist/utils/constants.js.map +1 -1
- package/package.json +78 -74
- package/dist/date/formatDateCompiled.d.ts +0 -30
- package/dist/date/formatDateCompiled.d.ts.map +0 -1
- package/dist/date/formatDateCompiled.js +0 -126
- package/dist/date/formatDateCompiled.js.map +0 -1
- package/dist/date/formatDatePlain.d.ts +0 -34
- package/dist/date/formatDatePlain.d.ts.map +0 -1
- package/dist/date/formatDatePlain.js +0 -128
- package/dist/date/formatDatePlain.js.map +0 -1
package/README.md
CHANGED
|
@@ -54,10 +54,10 @@ import { debounce } from '@planarcat/js-toolkit';
|
|
|
54
54
|
|
|
55
55
|
// 创建防抖函数
|
|
56
56
|
const debouncedFn = debounce(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
() => {
|
|
58
|
+
console.log('函数执行了!');
|
|
59
|
+
},
|
|
60
|
+
{ delay: 500 },
|
|
61
61
|
);
|
|
62
62
|
|
|
63
63
|
// 多次调用,只会执行最后一次
|
|
@@ -70,7 +70,10 @@ debouncedFn();
|
|
|
70
70
|
### 数字格式化
|
|
71
71
|
|
|
72
72
|
```typescript
|
|
73
|
-
import {
|
|
73
|
+
import {
|
|
74
|
+
toFormattedNumber,
|
|
75
|
+
toFormattedNumberString,
|
|
76
|
+
} from '@planarcat/js-toolkit';
|
|
74
77
|
|
|
75
78
|
// 基本使用
|
|
76
79
|
console.log(toFormattedNumber(1234.5678));
|
|
@@ -90,10 +93,10 @@ console.log(toFormattedNumber([123.456, '456.789']));
|
|
|
90
93
|
|
|
91
94
|
// 处理深层数组
|
|
92
95
|
console.log(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
toFormattedNumber([
|
|
97
|
+
[1, '1.23'],
|
|
98
|
+
['45.67', [89.01, 'abc']],
|
|
99
|
+
]),
|
|
97
100
|
);
|
|
98
101
|
// 输出: [[1, 1.23], [45.67, [89.01, NaN]]]
|
|
99
102
|
|
|
@@ -106,7 +109,9 @@ console.log(toFormattedNumberString(123.4, { decimalPlaces: 2 }));
|
|
|
106
109
|
// 输出: "123.40"
|
|
107
110
|
|
|
108
111
|
// 带前缀后缀
|
|
109
|
-
console.log(
|
|
112
|
+
console.log(
|
|
113
|
+
toFormattedNumberString(1234.5678, { prefix: '$', suffix: ' USD' }),
|
|
114
|
+
);
|
|
110
115
|
// 输出: "$1234.5678 USD"
|
|
111
116
|
|
|
112
117
|
// 本地化格式
|
|
@@ -121,31 +126,33 @@ console.log(toFormattedNumberString(0, { zeroValue: '-' }));
|
|
|
121
126
|
|
|
122
127
|
// 预处理函数
|
|
123
128
|
console.log(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
toFormattedNumberString(0.1234, {
|
|
130
|
+
preProcessor: (original, num) => num * 100,
|
|
131
|
+
suffix: '%',
|
|
132
|
+
}),
|
|
128
133
|
);
|
|
129
134
|
// 输出: "12.34%"
|
|
130
135
|
|
|
131
136
|
// 函数类型前缀
|
|
132
137
|
console.log(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
toFormattedNumberString(123.456, {
|
|
139
|
+
prefix: (original, num, formatted) => `$${Math.floor(num)}`,
|
|
140
|
+
}),
|
|
136
141
|
);
|
|
137
142
|
// 输出: "$123123.456"
|
|
138
143
|
|
|
139
144
|
// 函数类型后缀
|
|
140
145
|
console.log(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
146
|
+
toFormattedNumberString(123.456, {
|
|
147
|
+
suffix: (original, num, formatted) => `/${num.toFixed(0)}`,
|
|
148
|
+
}),
|
|
144
149
|
);
|
|
145
150
|
// 输出: "123.456/123"
|
|
146
151
|
|
|
147
152
|
// 处理数组
|
|
148
|
-
console.log(
|
|
153
|
+
console.log(
|
|
154
|
+
toFormattedNumberString([123.456, '789.012'], { decimalPlaces: 2 }),
|
|
155
|
+
);
|
|
149
156
|
// 输出: ["123.46", "789.01"]
|
|
150
157
|
```
|
|
151
158
|
|
|
@@ -162,10 +169,10 @@ console.log(toFormattedNumberString([123.456, '789.012'], { decimalPlaces: 2 }))
|
|
|
162
169
|
|
|
163
170
|
```bash
|
|
164
171
|
# 生成 API 文档
|
|
165
|
-
|
|
172
|
+
pnpm run docs
|
|
166
173
|
|
|
167
174
|
# 监听模式生成文档
|
|
168
|
-
|
|
175
|
+
pnpm run docs:watch
|
|
169
176
|
```
|
|
170
177
|
|
|
171
178
|
## 开发
|
|
@@ -195,25 +202,25 @@ src/
|
|
|
195
202
|
|
|
196
203
|
```bash
|
|
197
204
|
# 安装依赖
|
|
198
|
-
|
|
205
|
+
pnpm install
|
|
199
206
|
|
|
200
207
|
# 构建项目
|
|
201
|
-
|
|
208
|
+
pnpm run build
|
|
202
209
|
|
|
203
210
|
# 运行测试
|
|
204
|
-
|
|
211
|
+
pnpm test
|
|
205
212
|
|
|
206
213
|
# 运行测试(监听模式)
|
|
207
|
-
|
|
214
|
+
pnpm run test:watch
|
|
208
215
|
|
|
209
216
|
# 代码检查
|
|
210
|
-
|
|
217
|
+
pnpm run lint
|
|
211
218
|
|
|
212
219
|
# 代码格式化
|
|
213
|
-
|
|
220
|
+
pnpm run format
|
|
214
221
|
|
|
215
222
|
# 清理构建文件
|
|
216
|
-
|
|
223
|
+
pnpm run clean
|
|
217
224
|
```
|
|
218
225
|
|
|
219
226
|
### 测试
|
|
@@ -222,10 +229,10 @@ npm run clean
|
|
|
222
229
|
|
|
223
230
|
```bash
|
|
224
231
|
# 运行所有测试
|
|
225
|
-
|
|
232
|
+
pnpm test
|
|
226
233
|
|
|
227
234
|
# 生成测试覆盖率报告
|
|
228
|
-
|
|
235
|
+
pnpm run test:coverage
|
|
229
236
|
```
|
|
230
237
|
|
|
231
238
|
## 贡献
|
|
@@ -248,6 +255,15 @@ npm run test:coverage
|
|
|
248
255
|
|
|
249
256
|
## 更新日志
|
|
250
257
|
|
|
258
|
+
### v1.7.1
|
|
259
|
+
|
|
260
|
+
- ✨ 修复了 `formatDate` 函数中 Unix 时间戳计算问题,确保基于 UTC 时间
|
|
261
|
+
- ✨ 统一了 regular 和 compile 两种模式下的时间戳计算逻辑
|
|
262
|
+
- ✨ 修复了测试用例中的时间戳期望值,确保跨时区测试通过
|
|
263
|
+
- ✨ 优化了项目依赖管理,迁移到 pnpm 包管理器
|
|
264
|
+
- ✨ 新增了自动化发布流程,支持 GitHub Actions 自动发布到 npm
|
|
265
|
+
- ✨ 添加了 API 文档自动部署到 GitHub Pages 的功能
|
|
266
|
+
|
|
251
267
|
### v1.7.0
|
|
252
268
|
|
|
253
269
|
- ✨ 优化日期格式化功能,移除了 `dddd` 和 `ddd` 标记
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileDateFormatter.d.ts","sourceRoot":"","sources":["../../src/date/compileDateFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"compileDateFormatter.d.ts","sourceRoot":"","sources":["../../src/date/compileDateFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,KACjC,MAAM,CAAC;AAQZ;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CA0SzE"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 将格式化字符串编译为高效的处理函数
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.compileDateFormatter =
|
|
7
|
+
exports.compileDateFormatter = compileDateFormatter;
|
|
8
8
|
const cache_1 = require("../utils/cache");
|
|
9
9
|
/**
|
|
10
10
|
* 编译后的日期格式化函数缓存
|
|
@@ -47,9 +47,9 @@ function compileDateFormatter(formatStr) {
|
|
|
47
47
|
const firstDayOfYear = new Date(year, 0, 1);
|
|
48
48
|
const dayOfYear = Math.ceil((date.getTime() - firstDayOfYear.getTime()) / (1000 * 60 * 60 * 24));
|
|
49
49
|
|
|
50
|
-
// Unix
|
|
51
|
-
const timestampSeconds = Math.floor(date.
|
|
52
|
-
const timestampMilliseconds = date.
|
|
50
|
+
// Unix 时间戳(基于 UTC 时间)
|
|
51
|
+
const timestampSeconds = Math.floor(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) / 1000);
|
|
52
|
+
const timestampMilliseconds = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
|
53
53
|
|
|
54
54
|
// 12小时制
|
|
55
55
|
const hours12 = hours % 12 || 12;
|
|
@@ -312,5 +312,4 @@ function compileDateFormatter(formatStr) {
|
|
|
312
312
|
compiledFormatCache.set(formatStr, formatter);
|
|
313
313
|
return formatter;
|
|
314
314
|
}
|
|
315
|
-
exports.compileDateFormatter = compileDateFormatter;
|
|
316
315
|
//# sourceMappingURL=compileDateFormatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileDateFormatter.js","sourceRoot":"","sources":["../../src/date/compileDateFormatter.ts"],"names":[],"mappings":";AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"compileDateFormatter.js","sourceRoot":"","sources":["../../src/date/compileDateFormatter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAwBH,oDA0SC;AA/TD,0CAA0C;AAU1C;;;GAGG;AACH,MAAM,mBAAmB,GAAG,IAAI,gBAAQ,CAA4B,GAAG,CAAC,CAAC;AAEzE;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,SAAiB;IACpD,kBAAkB;IAClB,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,SAAS;IACT,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAwEU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkN/B,CAAC;IAEF,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAsB,CAAC;IAE7E,WAAW;IACX,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAU7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,iBAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAU7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,iBAAS,UAAU,CACjB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACvC,MAAM,CA6BR;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.js","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":";;AACA,0CAA0C;AAC1C,iEAA8D;AAC9D,iEAA6E;AAE7E,yBAAyB;AACzB,MAAM,iBAAiB,GAAG,IAAI,gBAAQ,CAAiB,GAAG,CAAC,CAAC;AAC5D,aAAa;AACb,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,SAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"formatDate.js","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":";;AACA,0CAA0C;AAC1C,iEAA8D;AAC9D,iEAA6E;AAE7E,yBAAyB;AACzB,MAAM,iBAAiB,GAAG,IAAI,gBAAQ,CAAiB,GAAG,CAAC,CAAC;AAC5D,aAAa;AACb,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,SAAS,UAAU,CACjB,KAAgB,EAChB,YAAoB,qBAAqB,EACzC,UAAsC,EAAE;IAExC,MAAM,IAAI,GAAG,IAAA,oCAAa,EAAC,KAAK,CAAC,CAAC;IAElC,qBAAqB;IACrB,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAE5D,iBAAiB;IACjB,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,2BAA2B;QAC3B,OAAO,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,mBAAmB;QACnB,OAAO,IAAA,2CAAoB,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,cAAc;QACd,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,SAAS;QACT,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QAEnD,aAAa;QACb,IAAI,YAAY,IAAI,sBAAsB,GAAG,CAAC,EAAE,CAAC;YAC/C,cAAc;YACd,OAAO,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,eAAe;YACf,OAAO,IAAA,2CAAoB,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regularDateFormatter.d.ts","sourceRoot":"","sources":["../../src/date/regularDateFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG7D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAepD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"regularDateFormatter.d.ts","sourceRoot":"","sources":["../../src/date/regularDateFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG7D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAepD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,MAAM,CAqBR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQhD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACvC,MAAM,CAgRR"}
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
* 直接解析格式化字符串,不使用编译缓存
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.safeParseDate = safeParseDate;
|
|
8
|
+
exports.getLocalizedWeekday = getLocalizedWeekday;
|
|
9
|
+
exports.getWeekNumber = getWeekNumber;
|
|
10
|
+
exports.regularDateFormatter = regularDateFormatter;
|
|
8
11
|
const constants_1 = require("../utils/constants");
|
|
9
12
|
/**
|
|
10
13
|
* 将各种输入类型安全地转换为 Date 对象
|
|
@@ -25,7 +28,6 @@ function safeParseDate(input) {
|
|
|
25
28
|
console.warn(`Invalid date input: ${input}, using current date instead.`);
|
|
26
29
|
return new Date();
|
|
27
30
|
}
|
|
28
|
-
exports.safeParseDate = safeParseDate;
|
|
29
31
|
/**
|
|
30
32
|
* 获取本地化的星期几
|
|
31
33
|
* @param weekday - 星期几 (0-6)
|
|
@@ -48,9 +50,9 @@ function getLocalizedWeekday(weekday, options) {
|
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
// 使用默认周名称映射
|
|
51
|
-
return constants_1.WEEKDAY_MAP[lang]?.[weekday] ||
|
|
53
|
+
return (constants_1.WEEKDAY_MAP[lang]?.[weekday] ||
|
|
54
|
+
constants_1.WEEKDAY_MAP.zh[weekday]);
|
|
52
55
|
}
|
|
53
|
-
exports.getLocalizedWeekday = getLocalizedWeekday;
|
|
54
56
|
/**
|
|
55
57
|
* 计算一年中的第几周 (ISO 8601)
|
|
56
58
|
* @param date - 日期对象
|
|
@@ -63,7 +65,6 @@ function getWeekNumber(date) {
|
|
|
63
65
|
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
64
66
|
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
65
67
|
}
|
|
66
|
-
exports.getWeekNumber = getWeekNumber;
|
|
67
68
|
/**
|
|
68
69
|
* 普通模式日期格式化函数
|
|
69
70
|
* @param date - 日期对象
|
|
@@ -87,9 +88,9 @@ function regularDateFormatter(date, formatStr = 'YYYY-MM-DD HH:mm:ss', options =
|
|
|
87
88
|
// 一年中的第几天
|
|
88
89
|
const firstDayOfYear = new Date(year, 0, 1);
|
|
89
90
|
const dayOfYear = Math.ceil((date.getTime() - firstDayOfYear.getTime()) / (1000 * 60 * 60 * 24));
|
|
90
|
-
// Unix
|
|
91
|
-
const timestampSeconds = Math.floor(date.
|
|
92
|
-
const timestampMilliseconds = date.
|
|
91
|
+
// Unix 时间戳(基于 UTC 时间,使用 getUTC* 方法确保一致性)
|
|
92
|
+
const timestampSeconds = Math.floor(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) / 1000);
|
|
93
|
+
const timestampMilliseconds = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
|
93
94
|
// 12小时制
|
|
94
95
|
const hours12 = hours % 12 || 12;
|
|
95
96
|
const ampm = hours < 12 ? 'AM' : 'PM';
|
|
@@ -101,14 +102,17 @@ function regularDateFormatter(date, formatStr = 'YYYY-MM-DD HH:mm:ss', options =
|
|
|
101
102
|
let i = 0;
|
|
102
103
|
const length = formatStr.length;
|
|
103
104
|
// 获取所有自定义格式化器,按长度降序排序,确保长标记优先匹配
|
|
104
|
-
const customFormatters = mergedOptions.customFormatters
|
|
105
|
+
const customFormatters = mergedOptions.customFormatters
|
|
106
|
+
? Object.entries(mergedOptions.customFormatters).sort(([a], [b]) => b.length - a.length)
|
|
107
|
+
: [];
|
|
105
108
|
// 解析格式化字符串
|
|
106
109
|
while (i < length) {
|
|
107
110
|
let found = false;
|
|
108
111
|
// 1. 检查自定义格式化器
|
|
109
112
|
if (customFormatters.length > 0) {
|
|
110
113
|
for (const [token, formatter] of customFormatters) {
|
|
111
|
-
if (i + token.length <= length &&
|
|
114
|
+
if (i + token.length <= length &&
|
|
115
|
+
formatStr.slice(i, i + token.length) === token) {
|
|
112
116
|
// 检查前后是否为字母数字字符
|
|
113
117
|
const prevChar = i > 0 ? formatStr[i - 1] : '';
|
|
114
118
|
const nextChar = i + token.length < length ? formatStr[i + token.length] : '';
|
|
@@ -298,5 +302,4 @@ function regularDateFormatter(date, formatStr = 'YYYY-MM-DD HH:mm:ss', options =
|
|
|
298
302
|
}
|
|
299
303
|
return result;
|
|
300
304
|
}
|
|
301
|
-
exports.regularDateFormatter = regularDateFormatter;
|
|
302
305
|
//# sourceMappingURL=regularDateFormatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regularDateFormatter.js","sourceRoot":"","sources":["../../src/date/regularDateFormatter.ts"],"names":[],"mappings":";AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"regularDateFormatter.js","sourceRoot":"","sources":["../../src/date/regularDateFormatter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module @planarcat/js-toolkit
|
|
5
5
|
*/
|
|
6
|
-
export { default as formatDate } from
|
|
7
|
-
export type { DateFormatOptions, DateInput, DateFormatMode, WeekdayNames } from
|
|
8
|
-
export { default as debounce } from
|
|
9
|
-
export type { DebounceOptions, DebouncedFunction } from
|
|
6
|
+
export { default as formatDate } from './date/formatDate';
|
|
7
|
+
export type { DateFormatOptions, DateInput, DateFormatMode, WeekdayNames, } from './types/date';
|
|
8
|
+
export { default as debounce } from './function/debounce';
|
|
9
|
+
export type { DebounceOptions, DebouncedFunction } from './types/function';
|
|
10
10
|
export declare const VERSION = "__VERSION__";
|
|
11
11
|
export declare const LIBRARY_NAME = "@planarcat/js-toolkit";
|
|
12
|
-
export { default as toFormattedNumber } from
|
|
13
|
-
export { default as toFormattedNumberString } from
|
|
14
|
-
export type { ToFormattedNumberOptions, ToFormattedNumberStringOptions, } from
|
|
12
|
+
export { default as toFormattedNumber } from './object/toFormattedNumber';
|
|
13
|
+
export { default as toFormattedNumberString } from './object/toFormattedNumberString';
|
|
14
|
+
export type { ToFormattedNumberOptions, ToFormattedNumberStringOptions, } from './types/object';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,eAAO,MAAM,OAAO,gBAAgB,CAAC;AACrC,eAAO,MAAM,YAAY,0BAA0B,CAAC;AAGpD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACtF,YAAY,EACV,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,8 @@ Object.defineProperty(exports, "formatDate", { enumerable: true, get: function (
|
|
|
16
16
|
var debounce_1 = require("./function/debounce");
|
|
17
17
|
Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return __importDefault(debounce_1).default; } });
|
|
18
18
|
// 工具库元数据
|
|
19
|
-
exports.VERSION =
|
|
20
|
-
exports.LIBRARY_NAME =
|
|
19
|
+
exports.VERSION = '__VERSION__'; // 构建时替换
|
|
20
|
+
exports.LIBRARY_NAME = '@planarcat/js-toolkit';
|
|
21
21
|
// 对象相关工具
|
|
22
22
|
var toFormattedNumber_1 = require("./object/toFormattedNumber");
|
|
23
23
|
Object.defineProperty(exports, "toFormattedNumber", { enumerable: true, get: function () { return __importDefault(toFormattedNumber_1).default; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,SAAS;AACT,gDAA0D;AAAjD,yHAAA,OAAO,OAAc;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,SAAS;AACT,gDAA0D;AAAjD,yHAAA,OAAO,OAAc;AAQ9B,SAAS;AACT,gDAA0D;AAAjD,qHAAA,OAAO,OAAY;AAG5B,SAAS;AACI,QAAA,OAAO,GAAG,aAAa,CAAC,CAAC,QAAQ;AACjC,QAAA,YAAY,GAAG,uBAAuB,CAAC;AAEpD,SAAS;AACT,gEAA0E;AAAjE,uIAAA,OAAO,OAAqB;AACrC,4EAAsF;AAA7E,mJAAA,OAAO,OAA2B;AAM3C,aAAa;AACb,2DAA2D"}
|
package/dist/types/date.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/types/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/types/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GACxE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;IAE1D;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,IAAI,GACJ,MAAM,GACN,KAAK,GACL,IAAI,GACJ,GAAG,GACH,KAAK,GACL,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,KAAK,GACL,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;gBACS,OAAO,GAAE,MAAY;IAKjC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAe3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,MAAM;CAGf"}
|
package/dist/utils/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,MAAa,QAAQ;IAInB;;;OAGG;IACH,YAAY,UAAkB,GAAG;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,cAAc;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,YAAY;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,6BAA6B;YAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,QAAQ;QACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AA9DD,4BA8DC"}
|
|
@@ -7,6 +7,14 @@ export declare const DEFAULT_DATE_FORMAT_OPTIONS: {
|
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* 周几中英文映射
|
|
10
|
-
|
|
11
|
-
export declare const WEEKDAY_MAP: Record<string, [
|
|
10
|
+
*/
|
|
11
|
+
export declare const WEEKDAY_MAP: Record<string, [
|
|
12
|
+
string,
|
|
13
|
+
string,
|
|
14
|
+
string,
|
|
15
|
+
string,
|
|
16
|
+
string,
|
|
17
|
+
string,
|
|
18
|
+
string
|
|
19
|
+
]>;
|
|
12
20
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;CAGvC,CAAC;AAEF;;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;CAGvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAC9B,MAAM,EACN;IAAC,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;CAAC,CAYzD,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -10,9 +10,17 @@ exports.DEFAULT_DATE_FORMAT_OPTIONS = {
|
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* 周几中英文映射
|
|
13
|
-
|
|
13
|
+
*/
|
|
14
14
|
exports.WEEKDAY_MAP = {
|
|
15
15
|
zh: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
|
16
|
-
en: [
|
|
16
|
+
en: [
|
|
17
|
+
'Sunday',
|
|
18
|
+
'Monday',
|
|
19
|
+
'Tuesday',
|
|
20
|
+
'Wednesday',
|
|
21
|
+
'Thursday',
|
|
22
|
+
'Friday',
|
|
23
|
+
'Saturday',
|
|
24
|
+
],
|
|
17
25
|
};
|
|
18
26
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,2BAA2B,GAAG;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,QAAQ,EAAE,OAAgB;IAC1B,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAGpB;IACF,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C,EAAE,EAAE;QACF,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,QAAQ;QACR,UAAU;KACX;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,76 +1,80 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
"name": "@planarcat/js-toolkit",
|
|
3
|
+
"version": "1.7.9",
|
|
4
|
+
"description": "一个自用的带学习性质的(目前)现代化的 JavaScript/TypeScript 实用工具库,提供类型安全、高性能的常用函数,包括对象转换、日期处理、函数优化等开发常用工具。",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE"
|
|
11
|
+
],
|
|
12
|
+
"keywords": [
|
|
13
|
+
"javascript",
|
|
14
|
+
"typescript",
|
|
15
|
+
"utility",
|
|
16
|
+
"toolkit",
|
|
17
|
+
"format-date",
|
|
18
|
+
"type-safe"
|
|
19
|
+
],
|
|
20
|
+
"author": "planarcat",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/planarcat/js-toolkit.git"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/planarcat/js-toolkit/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/planarcat/js-toolkit#readme",
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/jest": "^29.5.14",
|
|
32
|
+
"@types/node": "^25.0.7",
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
34
|
+
"@typescript-eslint/parser": "^6.21.0",
|
|
35
|
+
"eslint": "^8.57.1",
|
|
36
|
+
"eslint-config-prettier": "^9.1.2",
|
|
37
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
38
|
+
"husky": "^9.1.7",
|
|
39
|
+
"jest": "^29.7.0",
|
|
40
|
+
"lint-staged": "^13.3.0",
|
|
41
|
+
"prettier": "^3.7.4",
|
|
42
|
+
"rimraf": "^5.0.10",
|
|
43
|
+
"ts-jest": "^29.4.6",
|
|
44
|
+
"ts-node": "^10.9.2",
|
|
45
|
+
"ts-node-dev": "^2.0.0",
|
|
46
|
+
"typedoc": "^0.28.16",
|
|
47
|
+
"typedoc-plugin-markdown": "^4.9.0",
|
|
48
|
+
"typescript": "^5.3.3"
|
|
49
|
+
},
|
|
50
|
+
"lint-staged": {
|
|
51
|
+
"*.{js,ts,tsx}": [
|
|
52
|
+
"eslint --fix",
|
|
53
|
+
"prettier --write"
|
|
11
54
|
],
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"repository": {
|
|
39
|
-
"type": "git",
|
|
40
|
-
"url": "https://github.com/planarcat/js-toolkit.git"
|
|
41
|
-
},
|
|
42
|
-
"bugs": {
|
|
43
|
-
"url": "https://github.com/planarcat/js-toolkit/issues"
|
|
44
|
-
},
|
|
45
|
-
"homepage": "https://github.com/planarcat/js-toolkit#readme",
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"@types/jest": "^29.5.14",
|
|
48
|
-
"@types/node": "^25.0.7",
|
|
49
|
-
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
50
|
-
"@typescript-eslint/parser": "^6.21.0",
|
|
51
|
-
"eslint": "^8.57.1",
|
|
52
|
-
"eslint-config-prettier": "^9.1.2",
|
|
53
|
-
"eslint-plugin-prettier": "^5.5.4",
|
|
54
|
-
"husky": "^9.1.7",
|
|
55
|
-
"jest": "^29.7.0",
|
|
56
|
-
"lint-staged": "^13.3.0",
|
|
57
|
-
"prettier": "^3.7.4",
|
|
58
|
-
"rimraf": "^5.0.10",
|
|
59
|
-
"ts-jest": "^29.4.6",
|
|
60
|
-
"ts-node": "^10.9.2",
|
|
61
|
-
"ts-node-dev": "^2.0.0",
|
|
62
|
-
"typedoc": "^0.28.16",
|
|
63
|
-
"typedoc-plugin-markdown": "^4.9.0",
|
|
64
|
-
"typescript": "^5.3.3"
|
|
65
|
-
},
|
|
66
|
-
"lint-staged": {
|
|
67
|
-
"*.{js,ts,tsx}": [
|
|
68
|
-
"eslint --fix",
|
|
69
|
-
"prettier --write"
|
|
70
|
-
],
|
|
71
|
-
"\"*.{js,ts,tsx}\"": "[\"eslint --fix\", \"prettier --write\"]"
|
|
72
|
-
},
|
|
73
|
-
"publishConfig": {
|
|
74
|
-
"access": "public"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
55
|
+
"\"*.{js,ts,tsx}\"": "[\"eslint --fix\", \"prettier --write\"]"
|
|
56
|
+
},
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public"
|
|
59
|
+
},
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "tsc -p tsconfig.build.json",
|
|
62
|
+
"build:watch": "tsc --watch",
|
|
63
|
+
"test": "jest",
|
|
64
|
+
"test:watch": "jest --watch",
|
|
65
|
+
"test:coverage": "jest --coverage",
|
|
66
|
+
"lint": "eslint \"src/**/*.ts\" \"__tests__/**/*.ts\"",
|
|
67
|
+
"lint:fix": "eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --fix",
|
|
68
|
+
"format": "prettier --write \"src/**/*.ts\" \"__tests__/**/*.ts\"",
|
|
69
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"__tests__/**/*.ts\"",
|
|
70
|
+
"clean": "rimraf dist coverage",
|
|
71
|
+
"docs": "typedoc",
|
|
72
|
+
"docs:watch": "typedoc --watch",
|
|
73
|
+
"bump": "node scripts/bump-version.js",
|
|
74
|
+
"bump:patch": "node scripts/bump-version.js patch",
|
|
75
|
+
"bump:minor": "node scripts/bump-version.js minor",
|
|
76
|
+
"bump:major": "node scripts/bump-version.js major",
|
|
77
|
+
"bump:beta": "node scripts/bump-version.js prerelease beta",
|
|
78
|
+
"bump:alpha": "node scripts/bump-version.js prerelease alpha"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 编译模式日期格式化实现
|
|
3
|
-
* 首次调用编译格式化字符串,后续调用使用缓存的编译函数
|
|
4
|
-
*/
|
|
5
|
-
import { DateFormatOptions, DateInput } from '../types/date';
|
|
6
|
-
/**
|
|
7
|
-
* 编译后的格式化函数类型
|
|
8
|
-
*/
|
|
9
|
-
type CompiledFormatter = (date: Date, options: DateFormatOptions) => string;
|
|
10
|
-
/**
|
|
11
|
-
* 编译格式化字符串,生成优化的格式化函数
|
|
12
|
-
* @param formatStr - 格式化字符串
|
|
13
|
-
* @returns 编译后的格式化函数
|
|
14
|
-
*/
|
|
15
|
-
export declare function compileFormat(formatStr: string): CompiledFormatter;
|
|
16
|
-
/**
|
|
17
|
-
* 清除格式化缓存
|
|
18
|
-
* @param formatStr - 可选,指定要清除的格式化字符串缓存
|
|
19
|
-
*/
|
|
20
|
-
export declare function clearFormatCache(formatStr?: string): void;
|
|
21
|
-
/**
|
|
22
|
-
* 编译模式日期格式化
|
|
23
|
-
* @param input - 要格式化的日期输入
|
|
24
|
-
* @param formatStr - 格式化字符串
|
|
25
|
-
* @param options - 格式化选项
|
|
26
|
-
* @returns 格式化后的日期字符串
|
|
27
|
-
*/
|
|
28
|
-
export declare function formatDateCompiled(input: DateInput, formatStr?: string, options?: Partial<DateFormatOptions>): string;
|
|
29
|
-
export default formatDateCompiled;
|
|
30
|
-
//# sourceMappingURL=formatDateCompiled.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDateCompiled.d.ts","sourceRoot":"","sources":["../../src/date/formatDateCompiled.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI7D;;GAEG;AACH,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,KAAK,MAAM,CAAC;AAO5E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CA0FlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACzC,MAAM,CASR;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatDateCompiled = exports.clearFormatCache = exports.compileFormat = void 0;
|
|
4
|
-
const constants_1 = require("../utils/constants");
|
|
5
|
-
const formatDatePlain_1 = require("./formatDatePlain");
|
|
6
|
-
/**
|
|
7
|
-
* 格式化缓存,用于存储编译后的格式化函数
|
|
8
|
-
*/
|
|
9
|
-
const FORMAT_CACHE = new Map();
|
|
10
|
-
/**
|
|
11
|
-
* 编译格式化字符串,生成优化的格式化函数
|
|
12
|
-
* @param formatStr - 格式化字符串
|
|
13
|
-
* @returns 编译后的格式化函数
|
|
14
|
-
*/
|
|
15
|
-
function compileFormat(formatStr) {
|
|
16
|
-
// 检查缓存
|
|
17
|
-
if (FORMAT_CACHE.has(formatStr)) {
|
|
18
|
-
return FORMAT_CACHE.get(formatStr);
|
|
19
|
-
}
|
|
20
|
-
// 生成编译后的函数
|
|
21
|
-
const compiledFn = (date, options) => {
|
|
22
|
-
// 获取日期各部分
|
|
23
|
-
const year = date.getFullYear();
|
|
24
|
-
const month = date.getMonth() + 1;
|
|
25
|
-
const day = date.getDate();
|
|
26
|
-
const hours = date.getHours();
|
|
27
|
-
const minutes = date.getMinutes();
|
|
28
|
-
const seconds = date.getSeconds();
|
|
29
|
-
const milliseconds = date.getMilliseconds();
|
|
30
|
-
const weekday = date.getDay();
|
|
31
|
-
const quarter = Math.floor((date.getMonth() + 3) / 3);
|
|
32
|
-
const weekNumber = (0, formatDatePlain_1.getWeekNumber)(date);
|
|
33
|
-
// 12小时制
|
|
34
|
-
const hours12 = hours % 12 || 12;
|
|
35
|
-
const ampm = hours < 12 ? 'AM' : 'PM';
|
|
36
|
-
const ampmLower = ampm.toLowerCase();
|
|
37
|
-
let result = formatStr;
|
|
38
|
-
// 优先替换 timestamp,避免被拆解
|
|
39
|
-
if (result.includes('timestamp')) {
|
|
40
|
-
result = result.replace(/timestamp/g, date.getTime().toString());
|
|
41
|
-
}
|
|
42
|
-
// 2. 应用自定义格式化器(优先级最高)
|
|
43
|
-
if (options.customFormatters) {
|
|
44
|
-
Object.entries(options.customFormatters).forEach(([token, formatter]) => {
|
|
45
|
-
const escapedToken = token.replace(/[.*+?^${}()|[\\]/g, '\\$&');
|
|
46
|
-
const regex = new RegExp(`(?<![a-zA-Z0-9])${escapedToken}(?![a-zA-Z0-9])`, 'g');
|
|
47
|
-
result = result.replace(regex, formatter(date));
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
// 3. 替换多字符标记(2-4个字符)
|
|
51
|
-
const multiCharReplacements = {
|
|
52
|
-
YYYY: year.toString().padStart(4, '0'),
|
|
53
|
-
YY: year.toString().slice(-2),
|
|
54
|
-
MM: month.toString().padStart(2, '0'),
|
|
55
|
-
DD: day.toString().padStart(2, '0'),
|
|
56
|
-
HH: hours.toString().padStart(2, '0'),
|
|
57
|
-
hh: hours12.toString().padStart(2, '0'),
|
|
58
|
-
mm: minutes.toString().padStart(2, '0'),
|
|
59
|
-
ss: seconds.toString().padStart(2, '0'),
|
|
60
|
-
SSS: milliseconds.toString().padStart(3, '0'),
|
|
61
|
-
WW: weekNumber.toString().padStart(2, '0'),
|
|
62
|
-
dd: (0, formatDatePlain_1.getLocalizedWeekday)(weekday, options),
|
|
63
|
-
};
|
|
64
|
-
Object.entries(multiCharReplacements).forEach(([token, value]) => {
|
|
65
|
-
// 使用单词边界或字符串边界来确保精确匹配
|
|
66
|
-
const regex = new RegExp(`\\b${token}\\b|${token}(?![a-zA-Z0-9])`, 'g');
|
|
67
|
-
result = result.replace(regex, value);
|
|
68
|
-
});
|
|
69
|
-
// 4. 替换单字符标记(使用更精确的匹配)
|
|
70
|
-
const singleCharReplacements = {
|
|
71
|
-
Y: year.toString(),
|
|
72
|
-
M: month.toString(),
|
|
73
|
-
D: day.toString(),
|
|
74
|
-
H: hours.toString(),
|
|
75
|
-
h: hours12.toString(),
|
|
76
|
-
m: minutes.toString(),
|
|
77
|
-
s: seconds.toString(),
|
|
78
|
-
W: weekNumber.toString(),
|
|
79
|
-
d: weekday.toString(),
|
|
80
|
-
Q: quarter.toString(),
|
|
81
|
-
A: ampm,
|
|
82
|
-
a: ampmLower,
|
|
83
|
-
};
|
|
84
|
-
Object.entries(singleCharReplacements).forEach(([token, value]) => {
|
|
85
|
-
// 单字符需要更精确的匹配:前面是边界或特定字符,后面不是相同字符
|
|
86
|
-
const regex = new RegExp(`(?<![a-zA-Z0-9])${token}(?![a-zA-Z0-9])`, 'g');
|
|
87
|
-
result = result.replace(regex, value);
|
|
88
|
-
});
|
|
89
|
-
return result;
|
|
90
|
-
};
|
|
91
|
-
// 缓存编译结果
|
|
92
|
-
FORMAT_CACHE.set(formatStr, compiledFn);
|
|
93
|
-
return compiledFn;
|
|
94
|
-
}
|
|
95
|
-
exports.compileFormat = compileFormat;
|
|
96
|
-
/**
|
|
97
|
-
* 清除格式化缓存
|
|
98
|
-
* @param formatStr - 可选,指定要清除的格式化字符串缓存
|
|
99
|
-
*/
|
|
100
|
-
function clearFormatCache(formatStr) {
|
|
101
|
-
if (formatStr) {
|
|
102
|
-
FORMAT_CACHE.delete(formatStr);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
FORMAT_CACHE.clear();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
exports.clearFormatCache = clearFormatCache;
|
|
109
|
-
/**
|
|
110
|
-
* 编译模式日期格式化
|
|
111
|
-
* @param input - 要格式化的日期输入
|
|
112
|
-
* @param formatStr - 格式化字符串
|
|
113
|
-
* @param options - 格式化选项
|
|
114
|
-
* @returns 格式化后的日期字符串
|
|
115
|
-
*/
|
|
116
|
-
function formatDateCompiled(input, formatStr = 'YYYY-MM-DD HH:mm:ss', options = {}) {
|
|
117
|
-
const date = (0, formatDatePlain_1.safeParseDate)(input);
|
|
118
|
-
const mergedOptions = { ...constants_1.DEFAULT_DATE_FORMAT_OPTIONS, ...options };
|
|
119
|
-
// 编译并缓存格式化函数
|
|
120
|
-
const formatter = compileFormat(formatStr);
|
|
121
|
-
// 使用编译后的函数格式化日期
|
|
122
|
-
return formatter(date, mergedOptions);
|
|
123
|
-
}
|
|
124
|
-
exports.formatDateCompiled = formatDateCompiled;
|
|
125
|
-
exports.default = formatDateCompiled;
|
|
126
|
-
//# sourceMappingURL=formatDateCompiled.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDateCompiled.js","sourceRoot":"","sources":["../../src/date/formatDateCompiled.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 普通模式日期格式化实现
|
|
3
|
-
* 每次调用都会重新解析格式化字符串
|
|
4
|
-
*/
|
|
5
|
-
import { DateFormatOptions, DateInput } from '../types/date';
|
|
6
|
-
/**
|
|
7
|
-
* 将各种输入类型安全地转换为 Date 对象
|
|
8
|
-
* @param input - 日期输入
|
|
9
|
-
* @returns 转换后的 Date 对象,无效输入返回当前时间
|
|
10
|
-
*/
|
|
11
|
-
export declare function safeParseDate(input: DateInput): Date;
|
|
12
|
-
/**
|
|
13
|
-
* 计算一年中的第几周 (ISO 8601)
|
|
14
|
-
* @param date - 日期对象
|
|
15
|
-
* @returns 周数
|
|
16
|
-
*/
|
|
17
|
-
export declare function getWeekNumber(date: Date): number;
|
|
18
|
-
/**
|
|
19
|
-
* 获取本地化的星期几
|
|
20
|
-
* @param weekday - 星期几 (0-6)
|
|
21
|
-
* @param options - 格式化选项
|
|
22
|
-
* @returns 本地化的星期几字符串
|
|
23
|
-
*/
|
|
24
|
-
export declare function getLocalizedWeekday(weekday: number, options: DateFormatOptions): string;
|
|
25
|
-
/**
|
|
26
|
-
* 普通模式日期格式化
|
|
27
|
-
* @param input - 要格式化的日期输入
|
|
28
|
-
* @param formatStr - 格式化字符串
|
|
29
|
-
* @param options - 格式化选项
|
|
30
|
-
* @returns 格式化后的日期字符串
|
|
31
|
-
*/
|
|
32
|
-
export declare function formatDatePlain(input: DateInput, formatStr?: string, options?: Partial<DateFormatOptions>): string;
|
|
33
|
-
export default formatDatePlain;
|
|
34
|
-
//# sourceMappingURL=formatDatePlain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDatePlain.d.ts","sourceRoot":"","sources":["../../src/date/formatDatePlain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG7D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAepD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAMhD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACzC,MAAM,CA+ER;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatDatePlain = exports.getLocalizedWeekday = exports.getWeekNumber = exports.safeParseDate = void 0;
|
|
4
|
-
const constants_1 = require("../utils/constants");
|
|
5
|
-
/**
|
|
6
|
-
* 将各种输入类型安全地转换为 Date 对象
|
|
7
|
-
* @param input - 日期输入
|
|
8
|
-
* @returns 转换后的 Date 对象,无效输入返回当前时间
|
|
9
|
-
*/
|
|
10
|
-
function safeParseDate(input) {
|
|
11
|
-
if (input instanceof Date && !isNaN(input.getTime())) {
|
|
12
|
-
return input;
|
|
13
|
-
}
|
|
14
|
-
if (typeof input === 'string' || typeof input === 'number') {
|
|
15
|
-
const date = new Date(input);
|
|
16
|
-
if (!isNaN(date.getTime())) {
|
|
17
|
-
return date;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
// 无效输入返回当前时间
|
|
21
|
-
console.warn(`Invalid date input: ${input}, using current date instead.`);
|
|
22
|
-
return new Date();
|
|
23
|
-
}
|
|
24
|
-
exports.safeParseDate = safeParseDate;
|
|
25
|
-
/**
|
|
26
|
-
* 计算一年中的第几周 (ISO 8601)
|
|
27
|
-
* @param date - 日期对象
|
|
28
|
-
* @returns 周数
|
|
29
|
-
*/
|
|
30
|
-
function getWeekNumber(date) {
|
|
31
|
-
const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
32
|
-
const dayNum = d.getUTCDay() || 7;
|
|
33
|
-
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
|
|
34
|
-
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
35
|
-
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
36
|
-
}
|
|
37
|
-
exports.getWeekNumber = getWeekNumber;
|
|
38
|
-
/**
|
|
39
|
-
* 获取本地化的星期几
|
|
40
|
-
* @param weekday - 星期几 (0-6)
|
|
41
|
-
* @param options - 格式化选项
|
|
42
|
-
* @returns 本地化的星期几字符串
|
|
43
|
-
*/
|
|
44
|
-
function getLocalizedWeekday(weekday, options) {
|
|
45
|
-
const lang = options.locale?.split('-')[0] || 'zh';
|
|
46
|
-
return constants_1.WEEKDAY_MAP[lang]?.[weekday] || constants_1.WEEKDAY_MAP.zh[weekday];
|
|
47
|
-
}
|
|
48
|
-
exports.getLocalizedWeekday = getLocalizedWeekday;
|
|
49
|
-
/**
|
|
50
|
-
* 普通模式日期格式化
|
|
51
|
-
* @param input - 要格式化的日期输入
|
|
52
|
-
* @param formatStr - 格式化字符串
|
|
53
|
-
* @param options - 格式化选项
|
|
54
|
-
* @returns 格式化后的日期字符串
|
|
55
|
-
*/
|
|
56
|
-
function formatDatePlain(input, formatStr = 'YYYY-MM-DD HH:mm:ss', options = {}) {
|
|
57
|
-
const date = safeParseDate(input);
|
|
58
|
-
const mergedOptions = { ...constants_1.DEFAULT_DATE_FORMAT_OPTIONS, ...options };
|
|
59
|
-
// 获取日期各部分
|
|
60
|
-
const year = date.getFullYear();
|
|
61
|
-
const month = date.getMonth() + 1;
|
|
62
|
-
const day = date.getDate();
|
|
63
|
-
const hours = date.getHours();
|
|
64
|
-
const minutes = date.getMinutes();
|
|
65
|
-
const seconds = date.getSeconds();
|
|
66
|
-
const milliseconds = date.getMilliseconds();
|
|
67
|
-
const weekday = date.getDay();
|
|
68
|
-
const quarter = Math.floor((date.getMonth() + 3) / 3);
|
|
69
|
-
const weekNumber = getWeekNumber(date);
|
|
70
|
-
// 12小时制
|
|
71
|
-
const hours12 = hours % 12 || 12;
|
|
72
|
-
const ampm = hours < 12 ? 'AM' : 'PM';
|
|
73
|
-
const ampmLower = ampm.toLowerCase();
|
|
74
|
-
let result = formatStr;
|
|
75
|
-
// 优先替换 timestamp,避免被拆解
|
|
76
|
-
if (result.includes('timestamp')) {
|
|
77
|
-
result = result.replace(/timestamp/g, date.getTime().toString());
|
|
78
|
-
}
|
|
79
|
-
// 2. 应用自定义格式化器(优先级最高)
|
|
80
|
-
if (mergedOptions.customFormatters) {
|
|
81
|
-
Object.entries(mergedOptions.customFormatters).forEach(([token, formatter]) => {
|
|
82
|
-
const escapedToken = token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
83
|
-
const regex = new RegExp(`(?<![a-zA-Z0-9])${escapedToken}(?![a-zA-Z0-9])`, 'g');
|
|
84
|
-
result = result.replace(regex, formatter(date));
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// 3. 替换多字符标记(2-4个字符)
|
|
88
|
-
const multiCharReplacements = {
|
|
89
|
-
YYYY: year.toString().padStart(4, '0'),
|
|
90
|
-
YY: year.toString().slice(-2),
|
|
91
|
-
MM: month.toString().padStart(2, '0'),
|
|
92
|
-
DD: day.toString().padStart(2, '0'),
|
|
93
|
-
HH: hours.toString().padStart(2, '0'),
|
|
94
|
-
hh: hours12.toString().padStart(2, '0'),
|
|
95
|
-
mm: minutes.toString().padStart(2, '0'),
|
|
96
|
-
ss: seconds.toString().padStart(2, '0'),
|
|
97
|
-
SSS: milliseconds.toString().padStart(3, '0'),
|
|
98
|
-
WW: weekNumber.toString().padStart(2, '0'),
|
|
99
|
-
dd: getLocalizedWeekday(weekday, mergedOptions),
|
|
100
|
-
};
|
|
101
|
-
Object.entries(multiCharReplacements).forEach(([token, value]) => {
|
|
102
|
-
const regex = new RegExp(`\\b${token}\\b|${token}(?![a-zA-Z0-9])`, 'g');
|
|
103
|
-
result = result.replace(regex, value);
|
|
104
|
-
});
|
|
105
|
-
// 4. 替换单字符标记(使用更精确的匹配)
|
|
106
|
-
const singleCharReplacements = {
|
|
107
|
-
Y: year.toString(),
|
|
108
|
-
M: month.toString(),
|
|
109
|
-
D: day.toString(),
|
|
110
|
-
H: hours.toString(),
|
|
111
|
-
h: hours12.toString(),
|
|
112
|
-
m: minutes.toString(),
|
|
113
|
-
s: seconds.toString(),
|
|
114
|
-
W: weekNumber.toString(),
|
|
115
|
-
d: weekday.toString(),
|
|
116
|
-
Q: quarter.toString(),
|
|
117
|
-
A: ampm,
|
|
118
|
-
a: ampmLower,
|
|
119
|
-
};
|
|
120
|
-
Object.entries(singleCharReplacements).forEach(([token, value]) => {
|
|
121
|
-
const regex = new RegExp(`(?<![a-zA-Z0-9])${token}(?![a-zA-Z0-9])`, 'g');
|
|
122
|
-
result = result.replace(regex, value);
|
|
123
|
-
});
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
exports.formatDatePlain = formatDatePlain;
|
|
127
|
-
exports.default = formatDatePlain;
|
|
128
|
-
//# sourceMappingURL=formatDatePlain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDatePlain.js","sourceRoot":"","sources":["../../src/date/formatDatePlain.ts"],"names":[],"mappings":"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"}
|