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

