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

如何从Smarty变量判断日期是否为周一?

如何在Smarty中判断日期是否为周一

你的原代码直接将日期变量与字符串monday比较是行不通的,因为$order.details.order_date存储的是日期格式的值(比如YYYY/MM/DD这类),并非星期名称字符串。要实现判断,你需要借助Smarty的date_format过滤器把日期转换成对应的星期标识,再做条件判断。

这里提供两种可靠的实现方式:

方式一:通过星期数字判断(推荐,不受语言影响)

使用%w格式符可以将日期转换成星期对应的数字(0代表周日,1代表周一,以此类推至6代表周六),直接判断数字是否为1即可:

{if $order.details.order_date|date_format:'%w' == 1}
  {$order.details.order_date|replace:'/':'-'|cat:' +8 days'|date_format:'%A, %e de %B del %Y'}
{/if}

方式二:通过星期全称判断

如果你的环境固定使用英文,也可以用%A格式符把日期转换成完整的星期名称(比如Monday),注意要匹配正确的大小写:

{if $order.details.order_date|date_format:'%A' == 'Monday'}
  {$order.details.order_date|replace:'/':'-'|cat:' +8 days'|date_format:'%A, %e de %B del %Y'}
{/if}

注意事项

如果你的系统需要支持多语言,优先用方式一的数字判断,因为星期名称会随语言设置变化(比如西班牙语中周一为Lunes),数字判断的兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:09:52