如何在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
相关产品推荐
相关产品推荐

