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

请求协助完善年份显示的JavaScript代码(从PHP迁移)

解决你的年份显示JS迁移问题

首先我先拆解一下你原来PHP代码的核心逻辑,这样能清晰对应到JS的实现需求:

原PHP代码的规则是:

  • 如果当前月份是7月及以后(date('m') > 06),显示「当前完整年份-下一年的两位年份」,比如2024年8月会显示 2024-25
  • 如果当前月份是1-6月,显示「上一年完整年份-当前年的两位年份」,比如2024年5月会显示 2023-24

你的JS代码目前有两个核心问题:

  1. 没有定义getYearOffset函数——这是导致代码完全无法运行的直接原因
  2. 原调用的参数逻辑和PHP的月份判断需求不匹配,就算有这个函数也达不到预期效果

下面是修正后的完整代码,完全匹配原PHP的功能:

完整可运行代码

<span id="year1"></span>-<span id="year2"></span>

<script type="text/javascript">
// 获取当前时间
const currentDate = new Date();
const fullYear = currentDate.getFullYear();
// JS的月份是0~11,所以+1转换成和PHP一致的1~12月
const currentMonth = currentDate.getMonth() + 1;

let displayYear1, displayYear2;
if (currentMonth > 6) {
    // 7月及以后:当前完整年份 + 下一年的两位年份
    displayYear1 = fullYear;
    displayYear2 = (fullYear + 1).toString().slice(-2);
} else {
    // 1-6月:上一年完整年份 + 当前年的两位年份
    displayYear1 = fullYear - 1;
    displayYear2 = fullYear.toString().slice(-2);
}

// 把结果渲染到页面元素上,用textContent比innerHTML更安全(纯文本场景)
document.getElementById("year1").textContent = displayYear1;
document.getElementById("year2").textContent = displayYear2;
</script>

代码关键点说明

  • 月份处理:JavaScript的getMonth()返回值是0(对应1月)到11(对应12月),所以必须加1才能和PHP的date('m')(1~12)逻辑对齐
  • 两位年份处理:用toString().slice(-2)截取完整年份的最后两位,完美实现PHP中date('y')的效果
  • 安全优化:因为我们只需要渲染纯文本,用textContent替代innerHTML可以避免潜在的XSS风险,性能也更好

你可以测试不同月份的情况:

  • 比如当前是2024年6月1日及之前:页面会显示 2023-24
  • 当前是2024年6月2日到12月:页面会显示 2024-25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:59