@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.
@@ -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,13 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 语言
4
+ * 语言相关常量配置(全局只读)
5
+ *
6
+ * ZH: 中文
7
+ * - zh
8
+ *
9
+ * EN: 英文
10
+ * - en
5
11
  */
6
12
  const LANG = {
7
13
  // 中文
@@ -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
- // 英文姓名,0-20位
18
- EN_NAME: /(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/,
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: /^\d+\.\d+$/,
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位和二代18位身份证
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,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}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
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?:|https?:|mailto:|tel:)/,
73
+ EXTERNAL: /^(http:|https:|ftp:|ftps:|mailto:|tel:)/i,
51
74
  };
52
75
 
53
76
  exports.REGEXP = REGEXP;
@@ -1,7 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 排序
4
+ * 排序相关常量配置(全局只读)
5
+ *
6
+ * DESC: 降序
7
+ * - 取值:0
8
+ *
9
+ * ASC: 升序
10
+ * - 取值:1
11
+ *
12
+ * RANDOM: 随机排序
13
+ * - 取值:2
5
14
  */
6
15
  const SORT = {
7
16
  // 降序
@@ -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;
@@ -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
  // 上午和下午