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

JavaScript时间脚本无法按需自动切换时段问题求助

问题修复:基于PST时区的Unbounce元素时段切换脚本

原脚本的核心问题

  1. 固定时区偏移错误:硬编码offset = -7未考虑太平洋夏令时(PDT,偏移-8),导致夏令时期间时段判断完全偏差。
  2. 日期判断逻辑错误:CurrentDay !== 0 || CurrentDay !== 6的逻辑永远为真(一个日期不可能同时是周日和周六),导致周末也会执行工作日的判断分支。
  3. 时区转换方式不可靠:手动计算UTC偏移容易出错,未利用浏览器原生的时区处理能力。

修正后的脚本代码

// 获取洛杉矶时区(自动适配PST/PDT)的当前日期时间信息
const laDateTimeParts = new Intl.DateTimeFormat('en-US', {
  timeZone: 'America/Los_Angeles',
  hour12: false,
  hour: '2-digit',
  weekday: 'numeric'
}).formatToParts(new Date());

// 解析出小时、星期几数值
const currentHour = parseInt(laDateTimeParts.find(part => part.type === 'hour').value, 10);
const currentDay = parseInt(laDateTimeParts.find(part => part.type === 'weekday').value, 10);

// 定义判断条件
const isWeekday = currentDay >= 1 && currentDay <= 5; // 周一到周五对应1-5
const isBusinessHours = currentHour >= 7 && currentHour < 16; // 7:00-16:00

// 切换元素显示状态
if (isWeekday && isBusinessHours) {
  // 工作时段显示目标元素
  $("#lp-pom-box-409").show();
  $("#lp-pom-text-341").show();
  $("#lp-pom-text-461").hide();
  $("#lp-pom-button-460").hide();
  $("#lp-pom-button-209").show();
} else {
  // 非工作时段/周末切换为其他元素
  $("#lp-pom-box-409").hide();
  $("#lp-pom-text-341").hide();
  $("#lp-pom-text-461").show();
  $("#lp-pom-button-460").show();
  $("#lp-pom-button-209").hide();
}

关键改进点

  • 自动适配夏令时:使用America/Los_Angeles时区标识符,浏览器会自动切换PST(冬季)和PDT(夏季)的偏移量,无需手动调整。
  • 修正逻辑判断:用currentDay >=1 && currentDay <=5精准判断工作日,彻底解决原脚本的逻辑陷阱。
  • 可靠的时间解析:通过Intl.DateTimeFormat.formatToParts直接获取目标时区的时间参数,避免手动UTC转换的误差。
  • 代码可读性提升:将判断条件提取为变量,逻辑更清晰,后续维护更便捷。

额外优化建议

如果需要在时段切换点自动更新元素状态,可以添加定时器每分钟检查一次:

// 每分钟执行一次时间检查与元素切换
setInterval(() => {
  // 插入上述完整的时间判断与元素切换代码
}, 60000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:18:29