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

TYPO3 FLUID模板如何计算时间戳与当前日期的天数差

问题原因

你的代码不生效主要是两个问题:

  • Fluid模板不会自动解析你直接写在大括号外的减法表达式,只会将整段内容作为普通字符串原样输出
  • 你将日期格式化为Y-m-d格式的字符串后,本身不支持直接做数值减法,就算强制运算也无法得到正确的天数差
实现方案

方案1:时间戳计算(兼容所有TYPO3版本)

先将两个日期转为Unix时间戳(单位为秒的纯数值格式),相减后除以一天的总秒数86400,取整即可得到天数差:

<f:if condition="{data_item.tx_mask_date}">
    <p class="ww-teaserbox__date">
        <f:variable name="nowTimestamp" value="{f:format.date(date: 'now', format: 'U')}" />
        <f:variable name="publishTimestamp" value="{f:format.date(date: data_item.tx_mask_date, format: 'U')}" />
        <f:variable name="diffDays" value="{(nowTimestamp - publishTimestamp) / 86400}" />
        <f:format.number decimals="0">{diffDays}</f:format.number>天前发布
    </p>
</f:if>

如果需要处理发布日期为未来时间的场景,可以加一层判断输出不同提示:

<f:if condition="{diffDays} > 0">
    <f:then><f:format.number decimals="0">{diffDays}</f:format.number>天前发布</f:then>
    <f:else if="{diffDays} < 0">还有<f:format.number decimals="0">{diffDays * -1}</f:format.number>天发布</f:else>
    <f:else>今日发布</f:else>
</f:if>

方案2:使用原生日期差视图助手(适用TYPO3 11 LTS及以上版本)

TYPO3 11及以上版本自带f:format.date.diff视图助手,可直接输出相对时间文本,无需手动计算:

<f:if condition="{data_item.tx_mask_date}">
    <p class="ww-teaserbox__date">
        {f:format.date.diff(date: data_item.tx_mask_date, referenceDate: 'now')}发布
    </p>
</f:if>

该助手会自动根据时间差输出2天前、3小时前、1个月前等符合日常使用习惯的相对时间描述。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:10