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

TYPO3 9.5中如何在if-else语句中访问日期时间对象属性

解决方案:TYPO3 9.5 Fluid中DateTime对象的时间部分条件判断

你的核心误区在于:Fluid模板里不能直接通过event.startdate.H或event.enddate.M这种格式符来访问DateTime对象的时间部分。TYPO3中的startdate/enddate是TYPO3\CMS\Core\Type\DateTime对象,它没有H、M这类属性,直接访问会返回空值,导致条件判断失效。

下面提供两种可行的解决方法:

方法一:先格式化时间部分到变量,再判断

用f:format.date的as属性将需要的时间片段(比如分钟数)存入变量,再用变量做条件判断:

<!-- 先提取enddate的分钟部分,存入endMinutes变量 -->
<f:format.date format="%M" as="endMinutes">{event.enddate}</f:format.date>

<!-- 基于变量做判断 -->
<f:if condition="{endMinutes} != '00'">
    <f:then>A</f:then>
    <f:else>B</f:else>
</f:if>

方法二:直接在条件中内嵌格式化逻辑

如果不想额外定义变量,可以直接在f:if的condition参数里调用f:format.date:

<f:if condition="{f:format.date(date: event.enddate, format: '%M')} != '00'">
    <f:then>A</f:then>
    <f:else>B</f:else>
</f:if>

补充说明

  • 如果你需要判断的是小时数(对应%H),只需要把上述代码中的%M替换为%H即可。
  • 你之前尝试的v:condition.string.contains失效的原因是:直接输出{event.startdate}时,Fluid会将DateTime对象转为默认格式的字符串(比如YYYY-MM-DD HH:MM:SS),但这种方式依赖默认格式,稳定性差,远不如直接用f:format.date提取指定部分可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:01:11