|
1 | | -import { isString } from '.' |
2 | 1 | import type { Numeric } from './types' |
3 | 2 |
|
4 | 3 | export type TimeFormatItem = 'y' | 'm' | 'd' | 'h' | 'M' | 's' |
5 | 4 |
|
6 | 5 | /** |
7 | 6 | * @description 格式化时间 |
8 | | - * @param timestamp 需要格式化的时间戳 |
| 7 | + * @param dateTime 需要格式化的时间 |
9 | 8 | * @param format 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd |
10 | 9 | */ |
11 | 10 |
|
12 | | -export function timeFormat(timestamp: Numeric, format = 'yyyy-mm-dd') { |
| 11 | +export function timeFormat(dateTime: Numeric, format = 'yyyy-mm-dd') { |
13 | 12 | let date: Date |
14 | 13 |
|
15 | 14 | // 若传入时间为假值,则取当前时间 |
16 | | - if (!timestamp) { |
| 15 | + if (!dateTime) { |
17 | 16 | date = new Date() |
18 | 17 | } |
19 | 18 |
|
20 | 19 | // 若为unix秒时间戳,则转为毫秒时间戳 |
21 | | - else if (/^\d{10}$/.test(timestamp?.toString().trim())) { |
22 | | - date = new Date(+timestamp * 1000) |
| 20 | + else if (/^\d{10}$/.test(dateTime?.toString().trim())) { |
| 21 | + date = new Date(+dateTime * 1000) |
23 | 22 | } |
24 | 23 |
|
25 | 24 | // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容 |
26 | | - else if (isString(timestamp)) { |
27 | | - date = new Date(Number(timestamp)) |
| 25 | + else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) { |
| 26 | + date = new Date(Number(dateTime)) |
| 27 | + } |
| 28 | + // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间 |
| 29 | + else if ( |
| 30 | + typeof dateTime === 'string' && |
| 31 | + dateTime.includes('-') && |
| 32 | + !dateTime.includes('T') |
| 33 | + ) { |
| 34 | + date = new Date(dateTime.replace(/-/g, '/')) |
28 | 35 | } |
29 | | - |
30 | 36 | // 其他都认为符合 RFC 2822 规范 |
31 | 37 | else { |
32 | | - // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间 |
33 | | - date = new Date( |
34 | | - typeof timestamp === 'string' ? timestamp.replace(/-/g, '/') : timestamp |
35 | | - ) |
| 38 | + date = new Date(dateTime) |
36 | 39 | } |
37 | | - |
38 | 40 | const timeSource = { |
39 | 41 | y: date.getFullYear().toString(), // 年 |
40 | 42 | m: (date.getMonth() + 1).toString().padStart(2, '0'), // 月 |
|
0 commit comments