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

法语维基模板开发:判断日期是否超3周以自动切换分类

法语维基百科模板:3周后自动切换分类的日期判断实现

需求概述

开发一款法语维基百科模板,核心功能如下:

  • 模板添加至页面后,满3周(21天)自动将页面切换至目标分类
  • 模板接收date参数,格式为DD/MM/YYYY,代表模板添加日期
  • 使用魔法词{{LOCALDAY2}}/{{LOCALMONTH2}}/{{LOCALYEAR}}获取当前本地日期
  • 需准确处理跨月、跨年的日期判断场景,替代现有的基于周数的实现方案

现有周数参考方案

{{#ifexpr: {{LOCALWEEK}} > {{#ifexpr: {{{semaine|0}}}>48 and {{LOCALWEEK}}<48 <!-- 检查是否12月添加 -->
                             | {{{semaine}}}-52 <!-- 若为12月,周数减52 -->
                             | {{{semaine}}}    <!-- 其他情况直接使用原周数 -->
                           }} + 3               <!-- 模板添加周数加3周 -->
   | [[:Catégorie:1]]                           <!-- 当前周数未超过目标周数时的分类 -->
   | [[:Catégorie:2]]                           <!-- 当前周数超过目标周数时的分类 -->
}}

基于日期时间戳的简洁实现方案

利用维基解析器函数#time将日期转换为Unix时间戳(秒数),通过数值计算直接判断日期差是否≥21天,完全规避跨月/跨年的复杂逻辑:

{{#ifexpr: {{#time:U|{{LOCALDAY2}}/{{LOCALMONTH2}}/{{LOCALYEAR}}}} - {{#time:U|{{{date|{{LOCALDAY2}}/{{LOCALMONTH2}}/{{LOCALYEAR}}}}}} >= 21 * 86400
   | [[:Catégorie:2]] <!-- 日期差≥21天,切换至目标分类 -->
   | [[:Catégorie:1]] <!-- 日期差<21天,保留初始分类 -->
}}

代码说明

  • #time:U|日期字符串:将指定格式的日期转换为从1970年1月1日至今的秒数(Unix时间戳)
  • 21 * 86400:21天对应的总秒数(1天=86400秒)
  • {{{date|默认值}}}:若用户未填写date参数,默认使用当前日期(可根据需求调整默认逻辑)
  • 数值对比逻辑直接明了,无需处理月份天数差异、跨年周数冲突等特殊场景

方案优势

  • 准确性更高:基于精确的时间戳计算,避免周数定义差异(如ISO周与非ISO周)导致的判断误差
  • 逻辑更简洁:无需编写复杂分支处理跨月/跨年场景,代码可读性更强
  • 扩展性更好:后续若需调整天数(如改为4周),仅需修改数值即可,无需重构逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:22:35