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

如何在Smarty中结合行程年份自定义日期实现邮件条件判断?

解决Smarty中动态判断行程当年4月15日前显示内容的问题

可行代码示例

你可以通过构造标准YYYY-MM-DD格式的日期字符串,让strtotime正确解析当年4月15日的时间戳,实现无需手动更新的动态判断:

{* 简洁写法:直接在判断逻辑中拼接日期 *}
{if $smarty.now <= strtotime("{$trip->start|date_format:'%Y'}-04-15 23:59:59")}
    这里是仅在行程当年4月15日及之前需要显示的特定信息
{/if}

如果需要拆分步骤提升可读性,也可以用变量存储中间值:

{* 获取行程对应的年份 *}
{assign var="trip_year" value=$trip->start|date_format:'%Y'}
{* 构造当年4月15日的完整日期(包含时分秒,确保覆盖当天全天)*}
{assign var="april_15_end" value="{$trip_year}-04-15 23:59:59"}
{* 基于时间戳进行比较判断 *}
{if $smarty.now <= strtotime($april_15_end)}
    这里是仅在行程当年4月15日及之前需要显示的特定信息
{/if}

你之前代码的问题

你尝试的strtotime("$tripyear"0415)存在语法错误:Smarty中字符串拼接需要遵循标准日期格式,直接将年份与数字0415连写会导致strtotime无法识别有效日期。必须用连字符分隔年、月、日(如"{$tripyear}-04-15"),才能让strtotime解析出正确的时间戳。

补充说明

  • $smarty.now返回的是当前时间的时间戳
  • 如果只写"{$trip_year}-04-15",strtotime会解析为当年4月15日的00:00:00,这意味着4月15日当天的内容不会被显示。若需要包含4月15日全天,必须加上23:59:59。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:34:50