Showing
1 changed file
with
11 additions
and
9 deletions
| 1 | /* | 1 | /* |
| 2 | * @Date: 2022-04-18 15:59:42 | 2 | * @Date: 2022-04-18 15:59:42 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2026-01-18 00:18:39 | 4 | + * @LastEditTime: 2026-01-23 15:18:16 |
| 5 | - * @FilePath: /xyxBooking-weapp/src/utils/tools.js | 5 | + * @FilePath: /git/xyxBooking-weapp/src/utils/tools.js |
| 6 | * @Description: 工具函数库 | 6 | * @Description: 工具函数库 |
| 7 | */ | 7 | */ |
| 8 | import dayjs from 'dayjs'; | 8 | import dayjs from 'dayjs'; |
| ... | @@ -87,18 +87,12 @@ const strExist = (array, str) => { | ... | @@ -87,18 +87,12 @@ const strExist = (array, str) => { |
| 87 | * 3. 该函数默认截取时间字符串前19位(slice(0, -6)),需根据实际时间格式调整截取长度 | 87 | * 3. 该函数默认截取时间字符串前19位(slice(0, -6)),需根据实际时间格式调整截取长度 |
| 88 | */ | 88 | */ |
| 89 | const formatDatetime = (data) => { | 89 | const formatDatetime = (data) => { |
| 90 | - // 格式化日期 | ||
| 91 | if (!data || !data.begin_time || !data.end_time) return ''; | 90 | if (!data || !data.begin_time || !data.end_time) return ''; |
| 92 | 91 | ||
| 93 | - // 预处理函数:移除时区后缀,统一格式为 ISO 8601 (YYYY-MM-DDTHH:mm:ss) | ||
| 94 | - // 这样做是为了让 dayjs 把它当作本地时间处理,避免时区转换导致的时间偏差(始终显示景点当地时间/字面时间) | ||
| 95 | const normalize = (timeStr) => { | 92 | const normalize = (timeStr) => { |
| 96 | if (!timeStr) return ''; | 93 | if (!timeStr) return ''; |
| 97 | - // 移除 +08, +08:00 等时区后缀 | ||
| 98 | let clean = timeStr.split('+')[0]; | 94 | let clean = timeStr.split('+')[0]; |
| 99 | - // 移除 Z 后缀 | ||
| 100 | clean = clean.split('Z')[0]; | 95 | clean = clean.split('Z')[0]; |
| 101 | - // 将空格替换为 T,确保兼容性 | ||
| 102 | clean = clean.trim().replace(/\s+/, 'T'); | 96 | clean = clean.trim().replace(/\s+/, 'T'); |
| 103 | return clean; | 97 | return clean; |
| 104 | }; | 98 | }; |
| ... | @@ -108,7 +102,15 @@ const formatDatetime = (data) => { | ... | @@ -108,7 +102,15 @@ const formatDatetime = (data) => { |
| 108 | 102 | ||
| 109 | if (!start.isValid() || !end.isValid()) return ''; | 103 | if (!start.isValid() || !end.isValid()) return ''; |
| 110 | 104 | ||
| 111 | - return `${start.format('YYYY-MM-DD')} ${start.format('HH:mm')}-${end.format('HH:mm')}`; | 105 | + const isNextDayMidnight = |
| 106 | + end.diff(start, 'day') === 1 && | ||
| 107 | + end.hour() === 0 && | ||
| 108 | + end.minute() === 0 && | ||
| 109 | + end.second() === 0; | ||
| 110 | + | ||
| 111 | + const endTimeText = isNextDayMidnight ? '24:00' : end.format('HH:mm'); | ||
| 112 | + | ||
| 113 | + return `${start.format('YYYY-MM-DD')} ${start.format('HH:mm')}-${endTimeText}`; | ||
| 112 | }; | 114 | }; |
| 113 | 115 | ||
| 114 | /** | 116 | /** | ... | ... |
-
Please register or login to post a comment