@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,7 +1,61 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 日期相关的多语言常量配置(全局只读)
|
|
5
|
+
*
|
|
6
|
+
* AM_PM: 上午/下午多语言配置
|
|
7
|
+
* - zh: { AM: "上午", PM: "下午" }
|
|
8
|
+
* - en: { AM: "AM", PM: "PM" }
|
|
9
|
+
*
|
|
10
|
+
* WEEK: 星期多语言配置
|
|
11
|
+
* - zh.FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
|
|
12
|
+
* - zh.SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
|
13
|
+
* - zh.MINI: ["日", "一", "二", "三", "四", "五", "六"]
|
|
14
|
+
* - en.FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
|
15
|
+
* - en.SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
|
16
|
+
* - en.MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
|
17
|
+
*
|
|
18
|
+
* MONTH: 月份多语言配置
|
|
19
|
+
* - zh.FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
|
|
20
|
+
* - zh.SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]
|
|
21
|
+
* - en.FULL: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
|
22
|
+
* - en.SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
|
23
|
+
*
|
|
24
|
+
* QUARTER: 季度多语言配置
|
|
25
|
+
* - zh.FULL: ["第一季度", "第二季度", "第三季度", "第四季度"]
|
|
26
|
+
* - zh.SHORT: ["一季度", "二季度", "三季度", "四季度"]
|
|
27
|
+
* - zh.MINI: ["一", "二", "三", "四"]
|
|
28
|
+
* - en.FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"]
|
|
29
|
+
* - en.SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"]
|
|
30
|
+
* - en.MINI: ["Q1", "Q2", "Q3", "Q4"]
|
|
31
|
+
*
|
|
32
|
+
* OVER_TIME: 剩余时间单位多语言配置
|
|
33
|
+
* - zh: { YEAR: "年", MONTH: "月", DATE: "日", HOUR: "时", MINUTE: "分", SECOND: "秒", MILLISECOND: "毫秒", DAY: "天", QUARTER: "季度" }
|
|
34
|
+
* - en: { YEAR: "year", MONTH: "month", DATE: "date", HOUR: "hour", MINUTE: "minute", SECOND: "second", MILLISECOND: "millisecond", DAY: "day", QUARTER: "quarter" }
|
|
35
|
+
*
|
|
36
|
+
* PASS_TIME: 过去时间描述多语言配置
|
|
37
|
+
* - zh: { YEAR: "年前", MONTH: "个月前", DAY: "天前", BEFORE_YESTERDAY: "前天", YESTERDAY: "昨天", TODAY: "今天", HOUR: "小时前", MINUTE: "分钟前", JUST: "刚刚" }
|
|
38
|
+
* - 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" }
|
|
39
|
+
*
|
|
40
|
+
* HOLIDAY: 节假日多语言配置
|
|
41
|
+
* - zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"]
|
|
42
|
+
* - en: ["New Year‘s Day", "Spring Festival", "Tomb Sweeping Day", "Labor Day", "Dragon Boat Festival", "Mid-Autumn Day", "National Day"]
|
|
43
|
+
*
|
|
44
|
+
* ZODIAC: 星座多语言配置
|
|
45
|
+
* - zh: ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座"]
|
|
46
|
+
* - en: ["Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius"]
|
|
47
|
+
*
|
|
48
|
+
* CHINESE_ZODIAC: 生肖多语言配置
|
|
49
|
+
* - zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
|
|
50
|
+
* - en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"]
|
|
51
|
+
*
|
|
52
|
+
* HEAVENLY_STEMS: 天干多语言配置
|
|
53
|
+
* - zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
|
|
54
|
+
* - en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"]
|
|
55
|
+
*
|
|
56
|
+
* EARTHLY_BRANCHES: 地支多语言配置
|
|
57
|
+
* - zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
|
|
58
|
+
* - en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"]
|
|
5
59
|
*/
|
|
6
60
|
const DATE = {
|
|
7
61
|
// 上午和下午
|
|
@@ -1,7 +1,48 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 身份证号相关常量配置(全局只读)
|
|
5
|
+
*
|
|
6
|
+
* PROVINCE: 身份证号前两位对应的省份/地区编码映射
|
|
7
|
+
* - 11: 北京
|
|
8
|
+
* - 12: 天津
|
|
9
|
+
* - 13: 河北
|
|
10
|
+
* - 14: 山西
|
|
11
|
+
* - 15: 内蒙古
|
|
12
|
+
* - 21: 辽宁
|
|
13
|
+
* - 22: 吉林
|
|
14
|
+
* - 23: 黑龙江
|
|
15
|
+
* - 31: 上海
|
|
16
|
+
* - 32: 江苏
|
|
17
|
+
* - 33: 浙江
|
|
18
|
+
* - 34: 安徽
|
|
19
|
+
* - 35: 福建
|
|
20
|
+
* - 36: 江西
|
|
21
|
+
* - 37: 山东
|
|
22
|
+
* - 41: 河南
|
|
23
|
+
* - 42: 湖北
|
|
24
|
+
* - 43: 湖南
|
|
25
|
+
* - 44: 广东
|
|
26
|
+
* - 45: 广西
|
|
27
|
+
* - 46: 海南
|
|
28
|
+
* - 50: 重庆
|
|
29
|
+
* - 51: 四川
|
|
30
|
+
* - 52: 贵州
|
|
31
|
+
* - 53: 云南
|
|
32
|
+
* - 54: 西藏
|
|
33
|
+
* - 61: 陕西
|
|
34
|
+
* - 62: 甘肃
|
|
35
|
+
* - 63: 青海
|
|
36
|
+
* - 64: 宁夏
|
|
37
|
+
* - 65: 新疆
|
|
38
|
+
* - 71: 台湾
|
|
39
|
+
* - 81: 香港
|
|
40
|
+
* - 82: 澳门
|
|
41
|
+
* - 91: 国外
|
|
42
|
+
*
|
|
43
|
+
* SEX: 身份证号解析的性别映射
|
|
44
|
+
* - MAN: 男
|
|
45
|
+
* - WOMAN: 女
|
|
5
46
|
*/
|
|
6
47
|
const ID_CARD = {
|
|
7
48
|
// 身份证号对应的省
|
|
@@ -1,7 +1,122 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
*
|
|
3
|
+
/**
|
|
4
|
+
* 键盘码相关常量配置(全局只读)
|
|
5
|
+
*
|
|
6
|
+
* 字符键:
|
|
7
|
+
* - 8: Backspace
|
|
8
|
+
* - 9: Tab
|
|
9
|
+
* - 13: Enter
|
|
10
|
+
* - 16: Shift
|
|
11
|
+
* - 17: Ctrl
|
|
12
|
+
* - 18: Alt
|
|
13
|
+
* - 19: Pause
|
|
14
|
+
* - 20: Caps Lock
|
|
15
|
+
* - 27: Escape
|
|
16
|
+
* - 32: Space
|
|
17
|
+
* - 33: Page Up
|
|
18
|
+
* - 34: Page Down
|
|
19
|
+
* - 35: End
|
|
20
|
+
* - 36: Home
|
|
21
|
+
* - 37: Left
|
|
22
|
+
* - 38: Up
|
|
23
|
+
* - 39: Right
|
|
24
|
+
* - 40: Down
|
|
25
|
+
* - 42: Print Screen
|
|
26
|
+
* - 45: Insert
|
|
27
|
+
* - 46: Delete
|
|
28
|
+
*
|
|
29
|
+
* 数字键:
|
|
30
|
+
* - 48: 0
|
|
31
|
+
* - 49: 1
|
|
32
|
+
* - 50: 2
|
|
33
|
+
* - 51: 3
|
|
34
|
+
* - 52: 4
|
|
35
|
+
* - 53: 5
|
|
36
|
+
* - 54: 6
|
|
37
|
+
* - 55: 7
|
|
38
|
+
* - 56: 8
|
|
39
|
+
* - 57: 9
|
|
40
|
+
*
|
|
41
|
+
* 字母键:
|
|
42
|
+
* - 65: A
|
|
43
|
+
* - 66: B
|
|
44
|
+
* - 67: C
|
|
45
|
+
* - 68: D
|
|
46
|
+
* - 69: E
|
|
47
|
+
* - 70: F
|
|
48
|
+
* - 71: G
|
|
49
|
+
* - 72: H
|
|
50
|
+
* - 73: I
|
|
51
|
+
* - 74: J
|
|
52
|
+
* - 75: K
|
|
53
|
+
* - 76: L
|
|
54
|
+
* - 77: M
|
|
55
|
+
* - 78: N
|
|
56
|
+
* - 79: O
|
|
57
|
+
* - 80: P
|
|
58
|
+
* - 81: Q
|
|
59
|
+
* - 82: R
|
|
60
|
+
* - 83: S
|
|
61
|
+
* - 84: T
|
|
62
|
+
* - 85: U
|
|
63
|
+
* - 86: V
|
|
64
|
+
* - 87: W
|
|
65
|
+
* - 88: X
|
|
66
|
+
* - 89: Y
|
|
67
|
+
* - 90: Z
|
|
68
|
+
*
|
|
69
|
+
* window 相关键:
|
|
70
|
+
* - 91: Windows
|
|
71
|
+
* - 93: Right Click
|
|
72
|
+
*
|
|
73
|
+
* 数字小键盘(Numpad):
|
|
74
|
+
* - 96: Numpad 0
|
|
75
|
+
* - 97: Numpad 1
|
|
76
|
+
* - 98: Numpad 2
|
|
77
|
+
* - 99: Numpad 3
|
|
78
|
+
* - 100: Numpad 4
|
|
79
|
+
* - 101: Numpad 5
|
|
80
|
+
* - 102: Numpad 6
|
|
81
|
+
* - 103: Numpad 7
|
|
82
|
+
* - 104: Numpad 8
|
|
83
|
+
* - 105: Numpad 9
|
|
84
|
+
* - 106: Numpad *
|
|
85
|
+
* - 107: Numpad +
|
|
86
|
+
* - 109: Numpad -
|
|
87
|
+
* - 110: Numpad .
|
|
88
|
+
* - 111: Numpad /
|
|
89
|
+
*
|
|
90
|
+
* F功能键:
|
|
91
|
+
* - 112: F1
|
|
92
|
+
* - 113: F2
|
|
93
|
+
* - 114: F3
|
|
94
|
+
* - 115: F4
|
|
95
|
+
* - 116: F5
|
|
96
|
+
* - 117: F6
|
|
97
|
+
* - 118: F7
|
|
98
|
+
* - 119: F8
|
|
99
|
+
* - 120: F9
|
|
100
|
+
* - 121: F10
|
|
101
|
+
* - 122: F11
|
|
102
|
+
* - 123: F12
|
|
103
|
+
*
|
|
104
|
+
* 特殊符号/功能键:
|
|
105
|
+
* - 144: Num Lock
|
|
106
|
+
* - 145: Scroll Lock
|
|
107
|
+
* - 182: My Computer
|
|
108
|
+
* - 183: My Calculator
|
|
109
|
+
* - 186: ;
|
|
110
|
+
* - 187: =
|
|
111
|
+
* - 188: ,
|
|
112
|
+
* - 189: -
|
|
113
|
+
* - 190: .
|
|
114
|
+
* - 191: /
|
|
115
|
+
* - 192: `
|
|
116
|
+
* - 219: [
|
|
117
|
+
* - 220: \
|
|
118
|
+
* - 221: ]
|
|
119
|
+
* - 222: '
|
|
5
120
|
*/
|
|
6
121
|
const KEYCODE = {
|
|
7
122
|
// 字符键
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 数学计算相关常量配置(全局只读)
|
|
5
|
+
*
|
|
6
|
+
* ROUND: 正常四舍五入
|
|
7
|
+
* - 取值:0
|
|
8
|
+
* - 示例:1.354保留两位是1.35;1.355保留两位是1.36
|
|
9
|
+
*
|
|
10
|
+
* ROUND_FLOOR: 向下舍出
|
|
11
|
+
* - 取值:1
|
|
12
|
+
* - 示例:1.354保留两位是1.35;1.355保留两位是1.35
|
|
5
13
|
*/
|
|
6
14
|
const MATH = {
|
|
7
15
|
// 正常四舍五入,如:1.354保留两位是1.35;1.355保留两位是1.36;
|
|
@@ -1,27 +1,50 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 正则表达式相关常量配置(全局只读)
|
|
5
|
+
*
|
|
6
|
+
* CH: 中文汉字
|
|
7
|
+
* EN: 英文字母
|
|
8
|
+
* LOWER_CASE: 小写字母
|
|
9
|
+
* UPPER_CASE: 大写字母
|
|
10
|
+
* CH_NAME: 中文姓名(2-16位)
|
|
11
|
+
* EN_NAME: 英文姓名(1-20位)
|
|
12
|
+
* NUMBER: 数字(包含正数和负数)
|
|
13
|
+
* INTEGER: 整数(包含:0,正整数和负整数)
|
|
14
|
+
* DECIMAL: 小数(包含正小数和负小数)
|
|
15
|
+
* INT_OR_FLOAT: 正整数或者保留两位小数
|
|
16
|
+
* MOBILE: 手机号码(支持+86)
|
|
17
|
+
* PHONE: 固定电话号码(比如:0755-1111111)
|
|
18
|
+
* EMAIL: 邮箱
|
|
19
|
+
* ID_CARD: 一代15位或二代18位身份证
|
|
20
|
+
* ID_CARD15: 仅校验一代15位身份证
|
|
21
|
+
* ID_CARD18: 仅校验二代18位身份证
|
|
22
|
+
* BANK_CARD: 银行卡号
|
|
23
|
+
* POST_CODE: 邮政编码
|
|
24
|
+
* URL: url地址(可获取主机地址、主机名、端口号、协议、查询参数、hash等信息)
|
|
25
|
+
* IP: ip地址
|
|
26
|
+
* IP6: IPv6地址
|
|
27
|
+
* EXTERNAL: 外链(http、https、mail、tel电话)
|
|
5
28
|
*/
|
|
6
29
|
const REGEXP = {
|
|
7
30
|
// 中文汉字
|
|
8
31
|
CH: /^[\u4E00-\u9FA5]+$/,
|
|
9
|
-
//
|
|
10
|
-
EN: /^[a-zA-Z]
|
|
32
|
+
// 英文字母,1个以上
|
|
33
|
+
EN: /^[a-zA-Z]+$/,
|
|
11
34
|
// 小写字母
|
|
12
35
|
LOWER_CASE: /^[a-z]+$/,
|
|
13
36
|
// 大写字母
|
|
14
37
|
UPPER_CASE: /^[A-Z]+$/,
|
|
15
|
-
// 中文姓名,2-16
|
|
38
|
+
// 中文姓名,2-16位(支持少数民族姓名间隔符「·」)
|
|
16
39
|
CH_NAME: /^[\u4e00-\u9fa5·]{2,16}$/,
|
|
17
|
-
// 英文姓名,
|
|
18
|
-
EN_NAME:
|
|
40
|
+
// 英文姓名,1-20位
|
|
41
|
+
EN_NAME: /^[a-zA-Z\s]{1,20}$/,
|
|
19
42
|
// 数字,包含正数和负数
|
|
20
43
|
NUMBER: /^([-+])?\d+(\.\d+)?$/,
|
|
21
44
|
// 整数,包含:0,正整数和负整数
|
|
22
45
|
INTEGER: /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/,
|
|
23
46
|
// 小数,包含正小数和负小数
|
|
24
|
-
DECIMAL:
|
|
47
|
+
DECIMAL: /^([-+])?\d+\.\d+$/,
|
|
25
48
|
// 正整数或者保留两位小数
|
|
26
49
|
INT_OR_FLOAT: /(^[1-9][0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^0\.[0-9]{1,2}$)|(^0$)/,
|
|
27
50
|
// 手机号码,支持+86
|
|
@@ -30,7 +53,7 @@ const REGEXP = {
|
|
|
30
53
|
PHONE: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
|
|
31
54
|
// 邮箱
|
|
32
55
|
EMAIL: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
|
|
33
|
-
// 一代15
|
|
56
|
+
// 一代15位或二代18位身份证
|
|
34
57
|
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)$)/,
|
|
35
58
|
// 仅校验一代15位身份证
|
|
36
59
|
ID_CARD15: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)/,
|
|
@@ -45,9 +68,9 @@ const REGEXP = {
|
|
|
45
68
|
// ip地址
|
|
46
69
|
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]?)$/,
|
|
47
70
|
// IPv6地址
|
|
48
|
-
IP6: /^(([0-9a-fA-F]{1,4}:){7
|
|
71
|
+
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,
|
|
49
72
|
// 是外链,http,https,mail,tel电话
|
|
50
|
-
EXTERNAL: /^(http
|
|
73
|
+
EXTERNAL: /^(http:|https:|ftp:|ftps:|mailto:|tel:)/i,
|
|
51
74
|
};
|
|
52
75
|
|
|
53
76
|
exports.REGEXP = REGEXP;
|
package/dist/cjs/date/index.cjs
CHANGED
|
@@ -1068,6 +1068,80 @@ function addQuarter(date = new Date(), num = 1) {
|
|
|
1068
1068
|
return date;
|
|
1069
1069
|
}
|
|
1070
1070
|
/* 格式化和解析日期 */
|
|
1071
|
+
/**
|
|
1072
|
+
* UTC 日期对象转本地时区日期对象
|
|
1073
|
+
* @description 将 UTC 时间的 Date 对象转换为本地时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
1074
|
+
* @param {Date} date UTC 日期对象,默认当前 UTC 时间
|
|
1075
|
+
* @returns {Date} 本地时区日期对象(时间戳 = UTC时间戳 + 时区偏移毫秒数)
|
|
1076
|
+
* @example
|
|
1077
|
+
* // UTC时间:2025-01-26 00:00:00
|
|
1078
|
+
* const utcDate = new Date('2025-01-26T00:00:00Z');
|
|
1079
|
+
* const localDate = fromDateUTC(utcDate);
|
|
1080
|
+
* console.log(toDateString(localDate)); // 2025-01-26 08:00:00(北京本地时间)
|
|
1081
|
+
*/
|
|
1082
|
+
function fromDateUTC(date = new Date()) {
|
|
1083
|
+
return new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);
|
|
1084
|
+
}
|
|
1085
|
+
/**
|
|
1086
|
+
* 本地时区日期转 UTC 日期对象
|
|
1087
|
+
* @description 将本地时间的 Date 对象转换为 UTC 时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
1088
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
1089
|
+
* @returns {Date} UTC 日期对象(时间戳 = 本地时间戳 - 时区偏移毫秒数)
|
|
1090
|
+
* @example
|
|
1091
|
+
* // 北京本地时间:2025-01-26 08:00:00(东8区)
|
|
1092
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
1093
|
+
* const utcDate = toDateUTC(localDate);
|
|
1094
|
+
* console.log(utcDate.toISOString()); // 2025-01-26T00:00:00.000Z(UTC时间)
|
|
1095
|
+
*/
|
|
1096
|
+
function toDateUTC(date = new Date()) {
|
|
1097
|
+
return new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
|
|
1098
|
+
}
|
|
1099
|
+
/**
|
|
1100
|
+
* 格式化日期为 UTC 字符串(符合 ISO 8601 标准)
|
|
1101
|
+
* @description 直接输出 UTC 时间的字符串,无需手动转换时区
|
|
1102
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
1103
|
+
* @param {DateOptions} options 格式化配置,默认 yyyy-MM-dd HH:mm:ss
|
|
1104
|
+
* @returns {string} UTC 日期字符串
|
|
1105
|
+
* @example
|
|
1106
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
1107
|
+
* console.log(toUTCString(localDate)); // 2025-01-26 00:00:00
|
|
1108
|
+
*/
|
|
1109
|
+
function toDataUTCString(date = new Date(), options = { format: "yyyy-MM-dd HH:mm:ss" }) {
|
|
1110
|
+
const utcDate = toDateUTC(date);
|
|
1111
|
+
return toDateString(utcDate, options);
|
|
1112
|
+
}
|
|
1113
|
+
/**
|
|
1114
|
+
* 日期字符串转为日期对象
|
|
1115
|
+
* @description 支持日期字符串,时间戳,Unix时间戳
|
|
1116
|
+
* @param {string|number} value 日期参数
|
|
1117
|
+
* @returns {Date} 返回日期对象
|
|
1118
|
+
*/
|
|
1119
|
+
function toDate(value) {
|
|
1120
|
+
if (index$1.isNull(value))
|
|
1121
|
+
return;
|
|
1122
|
+
try {
|
|
1123
|
+
// 是日期字符串
|
|
1124
|
+
if (index$1.isString(value)) {
|
|
1125
|
+
return new Date(String(value).replace(/-/g, "/"));
|
|
1126
|
+
}
|
|
1127
|
+
// 是时间戳
|
|
1128
|
+
else if (index$1.isInteger(value) && String(value).length === 13) {
|
|
1129
|
+
return new Date(value);
|
|
1130
|
+
}
|
|
1131
|
+
// 是unix时间戳
|
|
1132
|
+
else if (index$1.isInteger(value) && String(value).length === 10) {
|
|
1133
|
+
return new Date(Number(value) * 1000);
|
|
1134
|
+
}
|
|
1135
|
+
// 不支持的日期格式
|
|
1136
|
+
else {
|
|
1137
|
+
console.error("Not supported date format!");
|
|
1138
|
+
return undefined;
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
catch (e) {
|
|
1142
|
+
console.error("Parse to Date error", e);
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1071
1145
|
/**
|
|
1072
1146
|
* 日期对象转为日期字符串
|
|
1073
1147
|
* @description 支持日期字符串,日期对象,时间戳,unix时间戳
|
|
@@ -1170,46 +1244,6 @@ function toDateString(date$1, options = { format: "yyyy-MM-dd", lang: "zh" }) {
|
|
|
1170
1244
|
return "";
|
|
1171
1245
|
}
|
|
1172
1246
|
}
|
|
1173
|
-
/**
|
|
1174
|
-
* 本地时区日期转UTC日期
|
|
1175
|
-
* @param {Date} date 本地日期,默认当前日期
|
|
1176
|
-
* @returns {Date} UTC日期对象
|
|
1177
|
-
*/
|
|
1178
|
-
function toDateUTC(date = new Date()) {
|
|
1179
|
-
return new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
|
|
1180
|
-
}
|
|
1181
|
-
/**
|
|
1182
|
-
* 日期字符串转为日期对象
|
|
1183
|
-
* @description 支持日期字符串,时间戳,Unix时间戳
|
|
1184
|
-
* @param {string|number} value 日期参数
|
|
1185
|
-
* @returns {Date} 返回日期对象
|
|
1186
|
-
*/
|
|
1187
|
-
function toDate(value) {
|
|
1188
|
-
if (index$1.isNull(value))
|
|
1189
|
-
return;
|
|
1190
|
-
try {
|
|
1191
|
-
// 是日期字符串
|
|
1192
|
-
if (index$1.isString(value)) {
|
|
1193
|
-
return new Date(String(value).replace(/-/g, "/"));
|
|
1194
|
-
}
|
|
1195
|
-
// 是时间戳
|
|
1196
|
-
else if (index$1.isInteger(value) && String(value).length === 13) {
|
|
1197
|
-
return new Date(value);
|
|
1198
|
-
}
|
|
1199
|
-
// 是unix时间戳
|
|
1200
|
-
else if (index$1.isInteger(value) && String(value).length === 10) {
|
|
1201
|
-
return new Date(Number(value) * 1000);
|
|
1202
|
-
}
|
|
1203
|
-
// 不支持的日期格式
|
|
1204
|
-
else {
|
|
1205
|
-
console.error("Not supported date format!");
|
|
1206
|
-
return undefined;
|
|
1207
|
-
}
|
|
1208
|
-
}
|
|
1209
|
-
catch (e) {
|
|
1210
|
-
console.error("Parse to Date error", e);
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
1247
|
/* 内部使用的函数 */
|
|
1214
1248
|
/**
|
|
1215
1249
|
* 单个数字前自动补齐零为两位
|
|
@@ -1230,6 +1264,7 @@ exports.addQuarter = addQuarter;
|
|
|
1230
1264
|
exports.addSeconds = addSeconds;
|
|
1231
1265
|
exports.addWeek = addWeek;
|
|
1232
1266
|
exports.addYear = addYear;
|
|
1267
|
+
exports.fromDateUTC = fromDateUTC;
|
|
1233
1268
|
exports.getAge = getAge;
|
|
1234
1269
|
exports.getBetweenDates = getBetweenDates;
|
|
1235
1270
|
exports.getBetweenMonths = getBetweenMonths;
|
|
@@ -1302,6 +1337,7 @@ exports.lastYear = lastYear;
|
|
|
1302
1337
|
exports.nextMonth = nextMonth;
|
|
1303
1338
|
exports.nextWeek = nextWeek;
|
|
1304
1339
|
exports.nextYear = nextYear;
|
|
1340
|
+
exports.toDataUTCString = toDataUTCString;
|
|
1305
1341
|
exports.toDate = toDate;
|
|
1306
1342
|
exports.toDateString = toDateString;
|
|
1307
1343
|
exports.toDateUTC = toDateUTC;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -122,6 +122,7 @@ exports.addQuarter = index$5.addQuarter;
|
|
|
122
122
|
exports.addSeconds = index$5.addSeconds;
|
|
123
123
|
exports.addWeek = index$5.addWeek;
|
|
124
124
|
exports.addYear = index$5.addYear;
|
|
125
|
+
exports.fromDateUTC = index$5.fromDateUTC;
|
|
125
126
|
exports.getAge = index$5.getAge;
|
|
126
127
|
exports.getBetweenDates = index$5.getBetweenDates;
|
|
127
128
|
exports.getBetweenMonths = index$5.getBetweenMonths;
|
|
@@ -194,6 +195,7 @@ exports.lastYear = index$5.lastYear;
|
|
|
194
195
|
exports.nextMonth = index$5.nextMonth;
|
|
195
196
|
exports.nextWeek = index$5.nextWeek;
|
|
196
197
|
exports.nextYear = index$5.nextYear;
|
|
198
|
+
exports.toDataUTCString = index$5.toDataUTCString;
|
|
197
199
|
exports.toDate = index$5.toDate;
|
|
198
200
|
exports.toDateString = index$5.toDateString;
|
|
199
201
|
exports.toDateUTC = index$5.toDateUTC;
|
|
@@ -1,4 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 日期相关的多语言常量配置(全局只读)
|
|
3
|
+
*
|
|
4
|
+
* AM_PM: 上午/下午多语言配置
|
|
5
|
+
* - zh: { AM: "上午", PM: "下午" }
|
|
6
|
+
* - en: { AM: "AM", PM: "PM" }
|
|
7
|
+
*
|
|
8
|
+
* WEEK: 星期多语言配置
|
|
9
|
+
* - zh.FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
|
|
10
|
+
* - zh.SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
|
11
|
+
* - zh.MINI: ["日", "一", "二", "三", "四", "五", "六"]
|
|
12
|
+
* - en.FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
|
13
|
+
* - en.SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
|
14
|
+
* - en.MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
|
15
|
+
*
|
|
16
|
+
* MONTH: 月份多语言配置
|
|
17
|
+
* - zh.FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
|
|
18
|
+
* - zh.SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]
|
|
19
|
+
* - en.FULL: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
|
20
|
+
* - en.SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
|
21
|
+
*
|
|
22
|
+
* QUARTER: 季度多语言配置
|
|
23
|
+
* - zh.FULL: ["第一季度", "第二季度", "第三季度", "第四季度"]
|
|
24
|
+
* - zh.SHORT: ["一季度", "二季度", "三季度", "四季度"]
|
|
25
|
+
* - zh.MINI: ["一", "二", "三", "四"]
|
|
26
|
+
* - en.FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"]
|
|
27
|
+
* - en.SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"]
|
|
28
|
+
* - en.MINI: ["Q1", "Q2", "Q3", "Q4"]
|
|
29
|
+
*
|
|
30
|
+
* OVER_TIME: 剩余时间单位多语言配置
|
|
31
|
+
* - zh: { YEAR: "年", MONTH: "月", DATE: "日", HOUR: "时", MINUTE: "分", SECOND: "秒", MILLISECOND: "毫秒", DAY: "天", QUARTER: "季度" }
|
|
32
|
+
* - en: { YEAR: "year", MONTH: "month", DATE: "date", HOUR: "hour", MINUTE: "minute", SECOND: "second", MILLISECOND: "millisecond", DAY: "day", QUARTER: "quarter" }
|
|
33
|
+
*
|
|
34
|
+
* PASS_TIME: 过去时间描述多语言配置
|
|
35
|
+
* - zh: { YEAR: "年前", MONTH: "个月前", DAY: "天前", BEFORE_YESTERDAY: "前天", YESTERDAY: "昨天", TODAY: "今天", HOUR: "小时前", MINUTE: "分钟前", JUST: "刚刚" }
|
|
36
|
+
* - 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" }
|
|
37
|
+
*
|
|
38
|
+
* HOLIDAY: 节假日多语言配置
|
|
39
|
+
* - zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"]
|
|
40
|
+
* - en: ["New Year‘s Day", "Spring Festival", "Tomb Sweeping Day", "Labor Day", "Dragon Boat Festival", "Mid-Autumn Day", "National Day"]
|
|
41
|
+
*
|
|
42
|
+
* ZODIAC: 星座多语言配置
|
|
43
|
+
* - zh: ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座"]
|
|
44
|
+
* - en: ["Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius"]
|
|
45
|
+
*
|
|
46
|
+
* CHINESE_ZODIAC: 生肖多语言配置
|
|
47
|
+
* - zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
|
|
48
|
+
* - en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"]
|
|
49
|
+
*
|
|
50
|
+
* HEAVENLY_STEMS: 天干多语言配置
|
|
51
|
+
* - zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
|
|
52
|
+
* - en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"]
|
|
53
|
+
*
|
|
54
|
+
* EARTHLY_BRANCHES: 地支多语言配置
|
|
55
|
+
* - zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
|
|
56
|
+
* - en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"]
|
|
3
57
|
*/
|
|
4
58
|
export declare const DATE: Record<string, any>;
|
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 日期相关的多语言常量配置(全局只读)
|
|
3
|
+
*
|
|
4
|
+
* AM_PM: 上午/下午多语言配置
|
|
5
|
+
* - zh: { AM: "上午", PM: "下午" }
|
|
6
|
+
* - en: { AM: "AM", PM: "PM" }
|
|
7
|
+
*
|
|
8
|
+
* WEEK: 星期多语言配置
|
|
9
|
+
* - zh.FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
|
|
10
|
+
* - zh.SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
|
11
|
+
* - zh.MINI: ["日", "一", "二", "三", "四", "五", "六"]
|
|
12
|
+
* - en.FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
|
13
|
+
* - en.SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
|
14
|
+
* - en.MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
|
15
|
+
*
|
|
16
|
+
* MONTH: 月份多语言配置
|
|
17
|
+
* - zh.FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
|
|
18
|
+
* - zh.SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]
|
|
19
|
+
* - en.FULL: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
|
20
|
+
* - en.SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
|
21
|
+
*
|
|
22
|
+
* QUARTER: 季度多语言配置
|
|
23
|
+
* - zh.FULL: ["第一季度", "第二季度", "第三季度", "第四季度"]
|
|
24
|
+
* - zh.SHORT: ["一季度", "二季度", "三季度", "四季度"]
|
|
25
|
+
* - zh.MINI: ["一", "二", "三", "四"]
|
|
26
|
+
* - en.FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"]
|
|
27
|
+
* - en.SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"]
|
|
28
|
+
* - en.MINI: ["Q1", "Q2", "Q3", "Q4"]
|
|
29
|
+
*
|
|
30
|
+
* OVER_TIME: 剩余时间单位多语言配置
|
|
31
|
+
* - zh: { YEAR: "年", MONTH: "月", DATE: "日", HOUR: "时", MINUTE: "分", SECOND: "秒", MILLISECOND: "毫秒", DAY: "天", QUARTER: "季度" }
|
|
32
|
+
* - en: { YEAR: "year", MONTH: "month", DATE: "date", HOUR: "hour", MINUTE: "minute", SECOND: "second", MILLISECOND: "millisecond", DAY: "day", QUARTER: "quarter" }
|
|
33
|
+
*
|
|
34
|
+
* PASS_TIME: 过去时间描述多语言配置
|
|
35
|
+
* - zh: { YEAR: "年前", MONTH: "个月前", DAY: "天前", BEFORE_YESTERDAY: "前天", YESTERDAY: "昨天", TODAY: "今天", HOUR: "小时前", MINUTE: "分钟前", JUST: "刚刚" }
|
|
36
|
+
* - 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" }
|
|
37
|
+
*
|
|
38
|
+
* HOLIDAY: 节假日多语言配置
|
|
39
|
+
* - zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"]
|
|
40
|
+
* - en: ["New Year‘s Day", "Spring Festival", "Tomb Sweeping Day", "Labor Day", "Dragon Boat Festival", "Mid-Autumn Day", "National Day"]
|
|
41
|
+
*
|
|
42
|
+
* ZODIAC: 星座多语言配置
|
|
43
|
+
* - zh: ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座"]
|
|
44
|
+
* - en: ["Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius"]
|
|
45
|
+
*
|
|
46
|
+
* CHINESE_ZODIAC: 生肖多语言配置
|
|
47
|
+
* - zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
|
|
48
|
+
* - en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"]
|
|
49
|
+
*
|
|
50
|
+
* HEAVENLY_STEMS: 天干多语言配置
|
|
51
|
+
* - zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
|
|
52
|
+
* - en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"]
|
|
53
|
+
*
|
|
54
|
+
* EARTHLY_BRANCHES: 地支多语言配置
|
|
55
|
+
* - zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
|
|
56
|
+
* - en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"]
|
|
3
57
|
*/
|
|
4
58
|
const DATE = {
|
|
5
59
|
// 上午和下午
|