You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站营业时间展示问题:jQuery按星期、日期显示时周日日期错误

问题修复:商家营业时间周日日期显示错误

错误原因

你的日期计算逻辑在处理周日(对应代码中i=0的情况)时存在逻辑漏洞,现有条件分支未正确覆盖所有场景,导致周日的日期计算不符合预期。

修复后的代码

HTML(无需修改)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<table class="openingHrs ">
  <tr class="day day1 gpGrn bordercol">
    <td class="day1Name nm" style="width:33.3%">Monday</td>
    <td class="day1Date dt" style="width:33.3%"></td>
    <td class="tm" style="width:33.3%">9:00am - 5:30pm</td>
  </tr>
  <tr class=" bordercol gpGrn day day2 ">
    <td class="day2Name nm">Tuesday</td>
    <td class="day2Date dt"></td>
    <td class="tm">9:00am - 5:30pm</td>
  </tr>
  <tr class="bordercol gpGrn day day3 ">
    <td class="day3Name nm">Wednesday</td>
    <td class="day3Date dt"></td>
    <td class="tm">9:00am - 5:30pm</td>
  </tr>
  <tr class="gpGrn day day4 bordercol">
    <td class="day4Name nm">Thursday</td>
    <td class="day4Date dt"></td>
    <td class="tm">9:00am - 8:00pm</td>
  </tr>
  <tr class="gpGrn day day5 bordercol">
    <td class="day5Name nm">Friday</td>
    <td class="day5Date dt"></td>
    <td class="tm">9:00am - 9:00pm</td>
  </tr>
  <tr class="gpGrn day day6 bordercol">
    <td class="day6Name nm">Saturday</td>
    <td class="day6Date dt"></td>
    <td class="tm">9:00am - 5:00pm</td>
  </tr>
  <tr class="gpGrn day day0 ">
    <td class="day0Name nm">Sunday</td>
    <td class="day0Date dt"></td>
    <td class="tm">10:00am - 5:00pm</td>
  </tr>
</table>

CSS(无需修改)

.day td {
  background-color: transparent !important;
  padding-left: 0px;
  padding-top: 10px;
  padding-bottom: 10px;
}

.day td {
  border: none;
}

.dt {
  text-align: center;
}

.tm {
  text-align: right;
}

JavaScript(修复日期计算逻辑)

const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];

const today = new Date();
const todayDay = today.getDay(); // 0=周日,1=周一...6=周六

// 标记"Today"
const currentDaySelector = `.day${todayDay}Name`;
jQuery(currentDaySelector).html("Today");
jQuery(`.day${todayDay}`).removeClass("gpGrn");

// 标记"Tomorrow"
let tomorrowDay;
if (todayDay === 6) {
  tomorrowDay = 0;
} else {
  tomorrowDay = todayDay + 1;
}
jQuery(`.day${tomorrowDay}Name`).html("Tomorrow");

// 计算当前星期的周一日期
const mondayOfWeek = new Date(today);
// 如果今天是周日,减去6天得到周一;否则减去(今天是周几-1)天
mondayOfWeek.setDate(today.getDate() - (todayDay === 0 ? 6 : todayDay - 1));

// 设置周一到周六的日期
for (let i = 1; i <= 6; i++) {
  const targetDate = new Date(mondayOfWeek);
  targetDate.setDate(mondayOfWeek.getDate() + (i - 1));
  const mth = monthNames[targetDate.getMonth()];
  const dt = String(targetDate.getDate()).padStart(2, '0');
  jQuery(`.day${i}Date`).html(`${dt} ${mth}`);
}

// 设置周日的日期(周一+6天)
const sundayDate = new Date(mondayOfWeek);
sundayDate.setDate(mondayOfWeek.getDate() + 6);
const sundayMth = monthNames[sundayDate.getMonth()];
const sundayDt = String(sundayDate.getDate()).padStart(2, '0');
jQuery(".day0Date").html(`${sundayDt} ${sundayMth}`);

说明

修复后的代码先计算出当前星期的周一日期,再依次推导出周二到周日的日期,逻辑更清晰,能确保所有日期都是当前星期的正确日期,彻底解决周日日期显示错误的问题。

内容的提问来源于stack exchange,提问作者Jayson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:00:21