@ivujs/i-utils 2.1.0 → 2.1.1
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/dist/cjs/constants/date.cjs +55 -1
- package/dist/cjs/constants/id-card.cjs +42 -1
- package/dist/cjs/constants/keycode.cjs +117 -2
- package/dist/cjs/constants/lang.cjs +7 -1
- package/dist/cjs/constants/math.cjs +9 -1
- package/dist/cjs/constants/regexp.cjs +33 -10
- package/dist/cjs/constants/sort.cjs +10 -1
- package/dist/cjs/date/index.cjs +76 -40
- package/dist/cjs/index.cjs +2 -0
- package/dist/es/constants/date.d.ts +55 -1
- package/dist/es/constants/date.mjs +55 -1
- package/dist/es/constants/id-card.d.ts +42 -1
- package/dist/es/constants/id-card.mjs +42 -1
- package/dist/es/constants/keycode.d.ts +118 -0
- package/dist/es/constants/keycode.mjs +117 -2
- package/dist/es/constants/lang.d.ts +7 -1
- package/dist/es/constants/lang.mjs +7 -1
- package/dist/es/constants/math.d.ts +9 -1
- package/dist/es/constants/math.mjs +9 -1
- package/dist/es/constants/regexp.d.ts +24 -1
- package/dist/es/constants/regexp.mjs +33 -10
- package/dist/es/constants/sort.d.ts +10 -1
- package/dist/es/constants/sort.mjs +10 -1
- package/dist/es/date/index.d.ts +39 -10
- package/dist/es/date/index.mjs +76 -42
- package/dist/es/index.mjs +1 -1
- package/dist/index.d.ts +304 -16
- package/dist/lib/index.full.umd.js +350 -58
- package/dist/lib/index.full.umd.min.js +2 -2
- package/dist/lib/index.full.umd.min.js.map +1 -1
- package/dist/resolver/auto-imports.cjs +3 -1
- package/dist/resolver/auto-imports.mjs +3 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @ivujs/i-utils v2.1.
|
|
2
|
+
* @ivujs/i-utils v2.1.1
|
|
3
3
|
* Copyright 2021-2026, <gao911222@163.com>
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -10,7 +10,16 @@
|
|
|
10
10
|
})(this, (function (exports) { 'use strict';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* 排序相关常量配置(全局只读)
|
|
14
|
+
*
|
|
15
|
+
* DESC: 降序
|
|
16
|
+
* - 取值:0
|
|
17
|
+
*
|
|
18
|
+
* ASC: 升序
|
|
19
|
+
* - 取值:1
|
|
20
|
+
*
|
|
21
|
+
* RANDOM: 随机排序
|
|
22
|
+
* - 取值:2
|
|
14
23
|
*/
|
|
15
24
|
const SORT = {
|
|
16
25
|
// 降序
|
|
@@ -22,7 +31,15 @@
|
|
|
22
31
|
};
|
|
23
32
|
|
|
24
33
|
/**
|
|
25
|
-
*
|
|
34
|
+
* 数学计算相关常量配置(全局只读)
|
|
35
|
+
*
|
|
36
|
+
* ROUND: 正常四舍五入
|
|
37
|
+
* - 取值:0
|
|
38
|
+
* - 示例:1.354保留两位是1.35;1.355保留两位是1.36
|
|
39
|
+
*
|
|
40
|
+
* ROUND_FLOOR: 向下舍出
|
|
41
|
+
* - 取值:1
|
|
42
|
+
* - 示例:1.354保留两位是1.35;1.355保留两位是1.35
|
|
26
43
|
*/
|
|
27
44
|
const MATH = {
|
|
28
45
|
// 正常四舍五入,如:1.354保留两位是1.35;1.355保留两位是1.36;
|
|
@@ -32,7 +49,13 @@
|
|
|
32
49
|
};
|
|
33
50
|
|
|
34
51
|
/**
|
|
35
|
-
*
|
|
52
|
+
* 语言相关常量配置(全局只读)
|
|
53
|
+
*
|
|
54
|
+
* ZH: 中文
|
|
55
|
+
* - zh
|
|
56
|
+
*
|
|
57
|
+
* EN: 英文
|
|
58
|
+
* - en
|
|
36
59
|
*/
|
|
37
60
|
const LANG = {
|
|
38
61
|
// 中文
|
|
@@ -42,27 +65,50 @@
|
|
|
42
65
|
};
|
|
43
66
|
|
|
44
67
|
/**
|
|
45
|
-
*
|
|
68
|
+
* 正则表达式相关常量配置(全局只读)
|
|
69
|
+
*
|
|
70
|
+
* CH: 中文汉字
|
|
71
|
+
* EN: 英文字母
|
|
72
|
+
* LOWER_CASE: 小写字母
|
|
73
|
+
* UPPER_CASE: 大写字母
|
|
74
|
+
* CH_NAME: 中文姓名(2-16位)
|
|
75
|
+
* EN_NAME: 英文姓名(1-20位)
|
|
76
|
+
* NUMBER: 数字(包含正数和负数)
|
|
77
|
+
* INTEGER: 整数(包含:0,正整数和负整数)
|
|
78
|
+
* DECIMAL: 小数(包含正小数和负小数)
|
|
79
|
+
* INT_OR_FLOAT: 正整数或者保留两位小数
|
|
80
|
+
* MOBILE: 手机号码(支持+86)
|
|
81
|
+
* PHONE: 固定电话号码(比如:0755-1111111)
|
|
82
|
+
* EMAIL: 邮箱
|
|
83
|
+
* ID_CARD: 一代15位或二代18位身份证
|
|
84
|
+
* ID_CARD15: 仅校验一代15位身份证
|
|
85
|
+
* ID_CARD18: 仅校验二代18位身份证
|
|
86
|
+
* BANK_CARD: 银行卡号
|
|
87
|
+
* POST_CODE: 邮政编码
|
|
88
|
+
* URL: url地址(可获取主机地址、主机名、端口号、协议、查询参数、hash等信息)
|
|
89
|
+
* IP: ip地址
|
|
90
|
+
* IP6: IPv6地址
|
|
91
|
+
* EXTERNAL: 外链(http、https、mail、tel电话)
|
|
46
92
|
*/
|
|
47
93
|
const REGEXP = {
|
|
48
94
|
// 中文汉字
|
|
49
95
|
CH: /^[\u4E00-\u9FA5]+$/,
|
|
50
|
-
//
|
|
51
|
-
EN: /^[a-zA-Z]
|
|
96
|
+
// 英文字母,1个以上
|
|
97
|
+
EN: /^[a-zA-Z]+$/,
|
|
52
98
|
// 小写字母
|
|
53
99
|
LOWER_CASE: /^[a-z]+$/,
|
|
54
100
|
// 大写字母
|
|
55
101
|
UPPER_CASE: /^[A-Z]+$/,
|
|
56
|
-
// 中文姓名,2-16
|
|
102
|
+
// 中文姓名,2-16位(支持少数民族姓名间隔符「·」)
|
|
57
103
|
CH_NAME: /^[\u4e00-\u9fa5·]{2,16}$/,
|
|
58
|
-
// 英文姓名,
|
|
59
|
-
EN_NAME:
|
|
104
|
+
// 英文姓名,1-20位
|
|
105
|
+
EN_NAME: /^[a-zA-Z\s]{1,20}$/,
|
|
60
106
|
// 数字,包含正数和负数
|
|
61
107
|
NUMBER: /^([-+])?\d+(\.\d+)?$/,
|
|
62
108
|
// 整数,包含:0,正整数和负整数
|
|
63
109
|
INTEGER: /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/,
|
|
64
110
|
// 小数,包含正小数和负小数
|
|
65
|
-
DECIMAL:
|
|
111
|
+
DECIMAL: /^([-+])?\d+\.\d+$/,
|
|
66
112
|
// 正整数或者保留两位小数
|
|
67
113
|
INT_OR_FLOAT: /(^[1-9][0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^0\.[0-9]{1,2}$)|(^0$)/,
|
|
68
114
|
// 手机号码,支持+86
|
|
@@ -71,7 +117,7 @@
|
|
|
71
117
|
PHONE: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
|
|
72
118
|
// 邮箱
|
|
73
119
|
EMAIL: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
|
|
74
|
-
// 一代15
|
|
120
|
+
// 一代15位或二代18位身份证
|
|
75
121
|
ID_CARD: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
|
|
76
122
|
// 仅校验一代15位身份证
|
|
77
123
|
ID_CARD15: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)/,
|
|
@@ -86,13 +132,67 @@
|
|
|
86
132
|
// ip地址
|
|
87
133
|
IP: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
88
134
|
// IPv6地址
|
|
89
|
-
IP6: /^(([0-9a-fA-F]{1,4}:){7
|
|
135
|
+
IP6: /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|::([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}|[0-9a-fA-F]{1,4}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})$/i,
|
|
90
136
|
// 是外链,http,https,mail,tel电话
|
|
91
|
-
EXTERNAL: /^(http
|
|
137
|
+
EXTERNAL: /^(http:|https:|ftp:|ftps:|mailto:|tel:)/i,
|
|
92
138
|
};
|
|
93
139
|
|
|
94
140
|
/**
|
|
95
|
-
*
|
|
141
|
+
* 日期相关的多语言常量配置(全局只读)
|
|
142
|
+
*
|
|
143
|
+
* AM_PM: 上午/下午多语言配置
|
|
144
|
+
* - zh: { AM: "上午", PM: "下午" }
|
|
145
|
+
* - en: { AM: "AM", PM: "PM" }
|
|
146
|
+
*
|
|
147
|
+
* WEEK: 星期多语言配置
|
|
148
|
+
* - zh.FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
|
|
149
|
+
* - zh.SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
|
150
|
+
* - zh.MINI: ["日", "一", "二", "三", "四", "五", "六"]
|
|
151
|
+
* - en.FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
|
152
|
+
* - en.SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
|
153
|
+
* - en.MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
|
154
|
+
*
|
|
155
|
+
* MONTH: 月份多语言配置
|
|
156
|
+
* - zh.FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
|
|
157
|
+
* - zh.SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]
|
|
158
|
+
* - en.FULL: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
|
159
|
+
* - en.SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
|
160
|
+
*
|
|
161
|
+
* QUARTER: 季度多语言配置
|
|
162
|
+
* - zh.FULL: ["第一季度", "第二季度", "第三季度", "第四季度"]
|
|
163
|
+
* - zh.SHORT: ["一季度", "二季度", "三季度", "四季度"]
|
|
164
|
+
* - zh.MINI: ["一", "二", "三", "四"]
|
|
165
|
+
* - en.FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"]
|
|
166
|
+
* - en.SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"]
|
|
167
|
+
* - en.MINI: ["Q1", "Q2", "Q3", "Q4"]
|
|
168
|
+
*
|
|
169
|
+
* OVER_TIME: 剩余时间单位多语言配置
|
|
170
|
+
* - zh: { YEAR: "年", MONTH: "月", DATE: "日", HOUR: "时", MINUTE: "分", SECOND: "秒", MILLISECOND: "毫秒", DAY: "天", QUARTER: "季度" }
|
|
171
|
+
* - en: { YEAR: "year", MONTH: "month", DATE: "date", HOUR: "hour", MINUTE: "minute", SECOND: "second", MILLISECOND: "millisecond", DAY: "day", QUARTER: "quarter" }
|
|
172
|
+
*
|
|
173
|
+
* PASS_TIME: 过去时间描述多语言配置
|
|
174
|
+
* - zh: { YEAR: "年前", MONTH: "个月前", DAY: "天前", BEFORE_YESTERDAY: "前天", YESTERDAY: "昨天", TODAY: "今天", HOUR: "小时前", MINUTE: "分钟前", JUST: "刚刚" }
|
|
175
|
+
* - en: { YEAR: " year ago", MONTH: " month ago", DAY: " day ago", BEFORE_YESTERDAY: "before yesterday", YESTERDAY: " yesterday", TODAY: " today", HOUR: " hour ago", MINUTE: " minute ago", JUST: " just" }
|
|
176
|
+
*
|
|
177
|
+
* HOLIDAY: 节假日多语言配置
|
|
178
|
+
* - zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"]
|
|
179
|
+
* - en: ["New Year‘s Day", "Spring Festival", "Tomb Sweeping Day", "Labor Day", "Dragon Boat Festival", "Mid-Autumn Day", "National Day"]
|
|
180
|
+
*
|
|
181
|
+
* ZODIAC: 星座多语言配置
|
|
182
|
+
* - zh: ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座"]
|
|
183
|
+
* - en: ["Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius"]
|
|
184
|
+
*
|
|
185
|
+
* CHINESE_ZODIAC: 生肖多语言配置
|
|
186
|
+
* - zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
|
|
187
|
+
* - en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"]
|
|
188
|
+
*
|
|
189
|
+
* HEAVENLY_STEMS: 天干多语言配置
|
|
190
|
+
* - zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
|
|
191
|
+
* - en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"]
|
|
192
|
+
*
|
|
193
|
+
* EARTHLY_BRANCHES: 地支多语言配置
|
|
194
|
+
* - zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
|
|
195
|
+
* - en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"]
|
|
96
196
|
*/
|
|
97
197
|
const DATE = {
|
|
98
198
|
// 上午和下午
|
|
@@ -266,8 +366,123 @@
|
|
|
266
366
|
},
|
|
267
367
|
};
|
|
268
368
|
|
|
269
|
-
|
|
270
|
-
*
|
|
369
|
+
/**
|
|
370
|
+
* 键盘码相关常量配置(全局只读)
|
|
371
|
+
*
|
|
372
|
+
* 字符键:
|
|
373
|
+
* - 8: Backspace
|
|
374
|
+
* - 9: Tab
|
|
375
|
+
* - 13: Enter
|
|
376
|
+
* - 16: Shift
|
|
377
|
+
* - 17: Ctrl
|
|
378
|
+
* - 18: Alt
|
|
379
|
+
* - 19: Pause
|
|
380
|
+
* - 20: Caps Lock
|
|
381
|
+
* - 27: Escape
|
|
382
|
+
* - 32: Space
|
|
383
|
+
* - 33: Page Up
|
|
384
|
+
* - 34: Page Down
|
|
385
|
+
* - 35: End
|
|
386
|
+
* - 36: Home
|
|
387
|
+
* - 37: Left
|
|
388
|
+
* - 38: Up
|
|
389
|
+
* - 39: Right
|
|
390
|
+
* - 40: Down
|
|
391
|
+
* - 42: Print Screen
|
|
392
|
+
* - 45: Insert
|
|
393
|
+
* - 46: Delete
|
|
394
|
+
*
|
|
395
|
+
* 数字键:
|
|
396
|
+
* - 48: 0
|
|
397
|
+
* - 49: 1
|
|
398
|
+
* - 50: 2
|
|
399
|
+
* - 51: 3
|
|
400
|
+
* - 52: 4
|
|
401
|
+
* - 53: 5
|
|
402
|
+
* - 54: 6
|
|
403
|
+
* - 55: 7
|
|
404
|
+
* - 56: 8
|
|
405
|
+
* - 57: 9
|
|
406
|
+
*
|
|
407
|
+
* 字母键:
|
|
408
|
+
* - 65: A
|
|
409
|
+
* - 66: B
|
|
410
|
+
* - 67: C
|
|
411
|
+
* - 68: D
|
|
412
|
+
* - 69: E
|
|
413
|
+
* - 70: F
|
|
414
|
+
* - 71: G
|
|
415
|
+
* - 72: H
|
|
416
|
+
* - 73: I
|
|
417
|
+
* - 74: J
|
|
418
|
+
* - 75: K
|
|
419
|
+
* - 76: L
|
|
420
|
+
* - 77: M
|
|
421
|
+
* - 78: N
|
|
422
|
+
* - 79: O
|
|
423
|
+
* - 80: P
|
|
424
|
+
* - 81: Q
|
|
425
|
+
* - 82: R
|
|
426
|
+
* - 83: S
|
|
427
|
+
* - 84: T
|
|
428
|
+
* - 85: U
|
|
429
|
+
* - 86: V
|
|
430
|
+
* - 87: W
|
|
431
|
+
* - 88: X
|
|
432
|
+
* - 89: Y
|
|
433
|
+
* - 90: Z
|
|
434
|
+
*
|
|
435
|
+
* window 相关键:
|
|
436
|
+
* - 91: Windows
|
|
437
|
+
* - 93: Right Click
|
|
438
|
+
*
|
|
439
|
+
* 数字小键盘(Numpad):
|
|
440
|
+
* - 96: Numpad 0
|
|
441
|
+
* - 97: Numpad 1
|
|
442
|
+
* - 98: Numpad 2
|
|
443
|
+
* - 99: Numpad 3
|
|
444
|
+
* - 100: Numpad 4
|
|
445
|
+
* - 101: Numpad 5
|
|
446
|
+
* - 102: Numpad 6
|
|
447
|
+
* - 103: Numpad 7
|
|
448
|
+
* - 104: Numpad 8
|
|
449
|
+
* - 105: Numpad 9
|
|
450
|
+
* - 106: Numpad *
|
|
451
|
+
* - 107: Numpad +
|
|
452
|
+
* - 109: Numpad -
|
|
453
|
+
* - 110: Numpad .
|
|
454
|
+
* - 111: Numpad /
|
|
455
|
+
*
|
|
456
|
+
* F功能键:
|
|
457
|
+
* - 112: F1
|
|
458
|
+
* - 113: F2
|
|
459
|
+
* - 114: F3
|
|
460
|
+
* - 115: F4
|
|
461
|
+
* - 116: F5
|
|
462
|
+
* - 117: F6
|
|
463
|
+
* - 118: F7
|
|
464
|
+
* - 119: F8
|
|
465
|
+
* - 120: F9
|
|
466
|
+
* - 121: F10
|
|
467
|
+
* - 122: F11
|
|
468
|
+
* - 123: F12
|
|
469
|
+
*
|
|
470
|
+
* 特殊符号/功能键:
|
|
471
|
+
* - 144: Num Lock
|
|
472
|
+
* - 145: Scroll Lock
|
|
473
|
+
* - 182: My Computer
|
|
474
|
+
* - 183: My Calculator
|
|
475
|
+
* - 186: ;
|
|
476
|
+
* - 187: =
|
|
477
|
+
* - 188: ,
|
|
478
|
+
* - 189: -
|
|
479
|
+
* - 190: .
|
|
480
|
+
* - 191: /
|
|
481
|
+
* - 192: `
|
|
482
|
+
* - 219: [
|
|
483
|
+
* - 220: \
|
|
484
|
+
* - 221: ]
|
|
485
|
+
* - 222: '
|
|
271
486
|
*/
|
|
272
487
|
const KEYCODE = {
|
|
273
488
|
// 字符键
|
|
@@ -381,7 +596,48 @@
|
|
|
381
596
|
};
|
|
382
597
|
|
|
383
598
|
/**
|
|
384
|
-
*
|
|
599
|
+
* 身份证号相关常量配置(全局只读)
|
|
600
|
+
*
|
|
601
|
+
* PROVINCE: 身份证号前两位对应的省份/地区编码映射
|
|
602
|
+
* - 11: 北京
|
|
603
|
+
* - 12: 天津
|
|
604
|
+
* - 13: 河北
|
|
605
|
+
* - 14: 山西
|
|
606
|
+
* - 15: 内蒙古
|
|
607
|
+
* - 21: 辽宁
|
|
608
|
+
* - 22: 吉林
|
|
609
|
+
* - 23: 黑龙江
|
|
610
|
+
* - 31: 上海
|
|
611
|
+
* - 32: 江苏
|
|
612
|
+
* - 33: 浙江
|
|
613
|
+
* - 34: 安徽
|
|
614
|
+
* - 35: 福建
|
|
615
|
+
* - 36: 江西
|
|
616
|
+
* - 37: 山东
|
|
617
|
+
* - 41: 河南
|
|
618
|
+
* - 42: 湖北
|
|
619
|
+
* - 43: 湖南
|
|
620
|
+
* - 44: 广东
|
|
621
|
+
* - 45: 广西
|
|
622
|
+
* - 46: 海南
|
|
623
|
+
* - 50: 重庆
|
|
624
|
+
* - 51: 四川
|
|
625
|
+
* - 52: 贵州
|
|
626
|
+
* - 53: 云南
|
|
627
|
+
* - 54: 西藏
|
|
628
|
+
* - 61: 陕西
|
|
629
|
+
* - 62: 甘肃
|
|
630
|
+
* - 63: 青海
|
|
631
|
+
* - 64: 宁夏
|
|
632
|
+
* - 65: 新疆
|
|
633
|
+
* - 71: 台湾
|
|
634
|
+
* - 81: 香港
|
|
635
|
+
* - 82: 澳门
|
|
636
|
+
* - 91: 国外
|
|
637
|
+
*
|
|
638
|
+
* SEX: 身份证号解析的性别映射
|
|
639
|
+
* - MAN: 男
|
|
640
|
+
* - WOMAN: 女
|
|
385
641
|
*/
|
|
386
642
|
const ID_CARD = {
|
|
387
643
|
// 身份证号对应的省
|
|
@@ -3121,6 +3377,80 @@
|
|
|
3121
3377
|
return date;
|
|
3122
3378
|
}
|
|
3123
3379
|
/* 格式化和解析日期 */
|
|
3380
|
+
/**
|
|
3381
|
+
* UTC 日期对象转本地时区日期对象
|
|
3382
|
+
* @description 将 UTC 时间的 Date 对象转换为本地时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
3383
|
+
* @param {Date} date UTC 日期对象,默认当前 UTC 时间
|
|
3384
|
+
* @returns {Date} 本地时区日期对象(时间戳 = UTC时间戳 + 时区偏移毫秒数)
|
|
3385
|
+
* @example
|
|
3386
|
+
* // UTC时间:2025-01-26 00:00:00
|
|
3387
|
+
* const utcDate = new Date('2025-01-26T00:00:00Z');
|
|
3388
|
+
* const localDate = fromDateUTC(utcDate);
|
|
3389
|
+
* console.log(toDateString(localDate)); // 2025-01-26 08:00:00(北京本地时间)
|
|
3390
|
+
*/
|
|
3391
|
+
function fromDateUTC(date = new Date()) {
|
|
3392
|
+
return new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);
|
|
3393
|
+
}
|
|
3394
|
+
/**
|
|
3395
|
+
* 本地时区日期转 UTC 日期对象
|
|
3396
|
+
* @description 将本地时间的 Date 对象转换为 UTC 时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
3397
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
3398
|
+
* @returns {Date} UTC 日期对象(时间戳 = 本地时间戳 - 时区偏移毫秒数)
|
|
3399
|
+
* @example
|
|
3400
|
+
* // 北京本地时间:2025-01-26 08:00:00(东8区)
|
|
3401
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
3402
|
+
* const utcDate = toDateUTC(localDate);
|
|
3403
|
+
* console.log(utcDate.toISOString()); // 2025-01-26T00:00:00.000Z(UTC时间)
|
|
3404
|
+
*/
|
|
3405
|
+
function toDateUTC(date = new Date()) {
|
|
3406
|
+
return new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
|
|
3407
|
+
}
|
|
3408
|
+
/**
|
|
3409
|
+
* 格式化日期为 UTC 字符串(符合 ISO 8601 标准)
|
|
3410
|
+
* @description 直接输出 UTC 时间的字符串,无需手动转换时区
|
|
3411
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
3412
|
+
* @param {DateOptions} options 格式化配置,默认 yyyy-MM-dd HH:mm:ss
|
|
3413
|
+
* @returns {string} UTC 日期字符串
|
|
3414
|
+
* @example
|
|
3415
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
3416
|
+
* console.log(toUTCString(localDate)); // 2025-01-26 00:00:00
|
|
3417
|
+
*/
|
|
3418
|
+
function toDataUTCString(date = new Date(), options = { format: "yyyy-MM-dd HH:mm:ss" }) {
|
|
3419
|
+
const utcDate = toDateUTC(date);
|
|
3420
|
+
return toDateString(utcDate, options);
|
|
3421
|
+
}
|
|
3422
|
+
/**
|
|
3423
|
+
* 日期字符串转为日期对象
|
|
3424
|
+
* @description 支持日期字符串,时间戳,Unix时间戳
|
|
3425
|
+
* @param {string|number} value 日期参数
|
|
3426
|
+
* @returns {Date} 返回日期对象
|
|
3427
|
+
*/
|
|
3428
|
+
function toDate(value) {
|
|
3429
|
+
if (isNull(value))
|
|
3430
|
+
return;
|
|
3431
|
+
try {
|
|
3432
|
+
// 是日期字符串
|
|
3433
|
+
if (isString(value)) {
|
|
3434
|
+
return new Date(String(value).replace(/-/g, "/"));
|
|
3435
|
+
}
|
|
3436
|
+
// 是时间戳
|
|
3437
|
+
else if (isInteger(value) && String(value).length === 13) {
|
|
3438
|
+
return new Date(value);
|
|
3439
|
+
}
|
|
3440
|
+
// 是unix时间戳
|
|
3441
|
+
else if (isInteger(value) && String(value).length === 10) {
|
|
3442
|
+
return new Date(Number(value) * 1000);
|
|
3443
|
+
}
|
|
3444
|
+
// 不支持的日期格式
|
|
3445
|
+
else {
|
|
3446
|
+
console.error("Not supported date format!");
|
|
3447
|
+
return undefined;
|
|
3448
|
+
}
|
|
3449
|
+
}
|
|
3450
|
+
catch (e) {
|
|
3451
|
+
console.error("Parse to Date error", e);
|
|
3452
|
+
}
|
|
3453
|
+
}
|
|
3124
3454
|
/**
|
|
3125
3455
|
* 日期对象转为日期字符串
|
|
3126
3456
|
* @description 支持日期字符串,日期对象,时间戳,unix时间戳
|
|
@@ -3223,46 +3553,6 @@
|
|
|
3223
3553
|
return "";
|
|
3224
3554
|
}
|
|
3225
3555
|
}
|
|
3226
|
-
/**
|
|
3227
|
-
* 本地时区日期转UTC日期
|
|
3228
|
-
* @param {Date} date 本地日期,默认当前日期
|
|
3229
|
-
* @returns {Date} UTC日期对象
|
|
3230
|
-
*/
|
|
3231
|
-
function toDateUTC(date = new Date()) {
|
|
3232
|
-
return new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
|
|
3233
|
-
}
|
|
3234
|
-
/**
|
|
3235
|
-
* 日期字符串转为日期对象
|
|
3236
|
-
* @description 支持日期字符串,时间戳,Unix时间戳
|
|
3237
|
-
* @param {string|number} value 日期参数
|
|
3238
|
-
* @returns {Date} 返回日期对象
|
|
3239
|
-
*/
|
|
3240
|
-
function toDate(value) {
|
|
3241
|
-
if (isNull(value))
|
|
3242
|
-
return;
|
|
3243
|
-
try {
|
|
3244
|
-
// 是日期字符串
|
|
3245
|
-
if (isString(value)) {
|
|
3246
|
-
return new Date(String(value).replace(/-/g, "/"));
|
|
3247
|
-
}
|
|
3248
|
-
// 是时间戳
|
|
3249
|
-
else if (isInteger(value) && String(value).length === 13) {
|
|
3250
|
-
return new Date(value);
|
|
3251
|
-
}
|
|
3252
|
-
// 是unix时间戳
|
|
3253
|
-
else if (isInteger(value) && String(value).length === 10) {
|
|
3254
|
-
return new Date(Number(value) * 1000);
|
|
3255
|
-
}
|
|
3256
|
-
// 不支持的日期格式
|
|
3257
|
-
else {
|
|
3258
|
-
console.error("Not supported date format!");
|
|
3259
|
-
return undefined;
|
|
3260
|
-
}
|
|
3261
|
-
}
|
|
3262
|
-
catch (e) {
|
|
3263
|
-
console.error("Parse to Date error", e);
|
|
3264
|
-
}
|
|
3265
|
-
}
|
|
3266
3556
|
/* 内部使用的函数 */
|
|
3267
3557
|
/**
|
|
3268
3558
|
* 单个数字前自动补齐零为两位
|
|
@@ -7833,6 +8123,7 @@
|
|
|
7833
8123
|
exports.formatTemplate = formatTemplate;
|
|
7834
8124
|
exports.formatThousand = formatThousand;
|
|
7835
8125
|
exports.formatTitle = formatTitle;
|
|
8126
|
+
exports.fromDateUTC = fromDateUTC;
|
|
7836
8127
|
exports.gcd = gcd;
|
|
7837
8128
|
exports.generateSM4Iv = generateSM4Iv;
|
|
7838
8129
|
exports.generateSM4Key = generateSM4Key;
|
|
@@ -8067,6 +8358,7 @@
|
|
|
8067
8358
|
exports.testLoaded = testLoaded;
|
|
8068
8359
|
exports.throttle = throttle;
|
|
8069
8360
|
exports.toCamelCase = toCamelCase;
|
|
8361
|
+
exports.toDataUTCString = toDataUTCString;
|
|
8070
8362
|
exports.toDate = toDate;
|
|
8071
8363
|
exports.toDateString = toDateString;
|
|
8072
8364
|
exports.toDateUTC = toDateUTC;
|