hookehuyr

fix: 将次日零点的时间格式化为24:00

避免将次日零点显示为00:00,改为显示24:00以明确表示当天结束时间
/*
* @Date: 2022-04-18 15:59:42
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2026-01-18 00:18:39
* @FilePath: /xyxBooking-weapp/src/utils/tools.js
* @LastEditTime: 2026-01-23 15:18:16
* @FilePath: /git/xyxBooking-weapp/src/utils/tools.js
* @Description: 工具函数库
*/
import dayjs from 'dayjs';
......@@ -87,18 +87,12 @@ const strExist = (array, str) => {
* 3. 该函数默认截取时间字符串前19位(slice(0, -6)),需根据实际时间格式调整截取长度
*/
const formatDatetime = (data) => {
// 格式化日期
if (!data || !data.begin_time || !data.end_time) return '';
// 预处理函数:移除时区后缀,统一格式为 ISO 8601 (YYYY-MM-DDTHH:mm:ss)
// 这样做是为了让 dayjs 把它当作本地时间处理,避免时区转换导致的时间偏差(始终显示景点当地时间/字面时间)
const normalize = (timeStr) => {
if (!timeStr) return '';
// 移除 +08, +08:00 等时区后缀
let clean = timeStr.split('+')[0];
// 移除 Z 后缀
clean = clean.split('Z')[0];
// 将空格替换为 T,确保兼容性
clean = clean.trim().replace(/\s+/, 'T');
return clean;
};
......@@ -108,7 +102,15 @@ const formatDatetime = (data) => {
if (!start.isValid() || !end.isValid()) return '';
return `${start.format('YYYY-MM-DD')} ${start.format('HH:mm')}-${end.format('HH:mm')}`;
const isNextDayMidnight =
end.diff(start, 'day') === 1 &&
end.hour() === 0 &&
end.minute() === 0 &&
end.second() === 0;
const endTimeText = isNextDayMidnight ? '24:00' : end.format('HH:mm');
return `${start.format('YYYY-MM-DD')} ${start.format('HH:mm')}-${endTimeText}`;
};
/**
......