|
|
@@ -882,30 +882,35 @@ export default {
|
|
|
|
|
|
const date = new Date(admissionDateTime);
|
|
|
const hour = date.getHours();
|
|
|
+ const minute = date.getMinutes();
|
|
|
+ const second = date.getSeconds();
|
|
|
+
|
|
|
+ // 将时间转换为分钟数,便于精确计算
|
|
|
+ const totalMinutes = hour * 60 + minute + second / 60;
|
|
|
|
|
|
// 标准时间点:02:00, 06:00, 10:00, 14:00, 18:00, 22:00
|
|
|
- const standardHours = [2, 6, 10, 14, 18, 22];
|
|
|
+ const standardMinutes = [2 * 60, 6 * 60, 10 * 60, 14 * 60, 18 * 60, 22 * 60];
|
|
|
|
|
|
// 计算到每个标准时间点的距离,选择最近的
|
|
|
let minDistance = Infinity;
|
|
|
let closestIndex = -1;
|
|
|
|
|
|
- for (let i = 0; i < standardHours.length; i++) {
|
|
|
- const standardHour = standardHours[i];
|
|
|
+ for (let i = 0; i < standardMinutes.length; i++) {
|
|
|
+ const standardMinute = standardMinutes[i];
|
|
|
let distance;
|
|
|
|
|
|
// 计算距离,考虑跨天的情况
|
|
|
- if (Math.abs(hour - standardHour) <= 12) {
|
|
|
+ if (Math.abs(totalMinutes - standardMinute) <= 12 * 60) {
|
|
|
// 同一天内或相邻天的情况
|
|
|
- distance = Math.abs(hour - standardHour);
|
|
|
+ distance = Math.abs(totalMinutes - standardMinute);
|
|
|
} else {
|
|
|
// 跨天的情况,需要计算最短距离
|
|
|
- if (hour > standardHour) {
|
|
|
- // 例如:23点到02点,距离是1小时
|
|
|
- distance = Math.min(hour - standardHour, (24 - hour) + standardHour);
|
|
|
+ if (totalMinutes > standardMinute) {
|
|
|
+ // 例如:23点到02点
|
|
|
+ distance = Math.min(totalMinutes - standardMinute, (24 * 60 - totalMinutes) + standardMinute);
|
|
|
} else {
|
|
|
- // 例如:1点到22点,距离是3小时
|
|
|
- distance = Math.min(standardHour - hour, (24 - standardHour) + hour);
|
|
|
+ // 例如:1点到22点
|
|
|
+ distance = Math.min(standardMinute - totalMinutes, (24 * 60 - standardMinute) + totalMinutes);
|
|
|
}
|
|
|
}
|
|
|
|