hookehuyr

fix: 修复 formatDatetime 函数处理跨午夜时间显示问题

重构日期时间格式化逻辑,使用 dayjs 库替代字符串切片以提升健壮性。新增对跨午夜至 00:00 情况的特殊处理,将其显示为 24:00,使时间区间表达更符合日常习惯。
......@@ -71,11 +71,31 @@ const strExist = (array, str) => {
return exist.length > 0
}
const formatDatetime = (data) => { // 格式化日期
let begin_time = data?.begin_time.slice(0, -6);
let end_time = data?.end_time.slice(0, -6);
let str = begin_time + ' ' + end_time;
return `${str.split(' ')[0]} ${str.split(' ')[1]}-${str.split(' ')[3]}`;
const formatDatetime = (data) => {
if (!data || !data.begin_time || !data.end_time) return '';
const normalize = (timeStr) => {
if (!timeStr) return '';
let clean = timeStr.split('+')[0];
clean = clean.split('Z')[0];
clean = clean.trim().replace(/\s+/, 'T');
return clean;
};
const start = dayjs(normalize(data.begin_time));
const end = dayjs(normalize(data.end_time));
if (!start.isValid() || !end.isValid()) return '';
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}`;
}
export { formatDate, wxInfo, hasEllipsis, parseQueryString, strExist, formatDatetime };
......