您是否在比较苹果和猩猩?
您的 myDate 值是字符串还是 DateTime 对象?表达式的两边必须是相同的类型,并且 DateTime 做了很多重载,以便您可以使用 比较 DateTime 对象>
,<=
依此类推。如果表达式的一侧是对象而另一侧是字符串,则会遇到问题。
其次,date.format
没有格式化字符串会返回默认的 POSIX 表示,根据Template::Plugin::Date ,它'%H:%M:%S %d-%b-%Y'
几乎肯定不是你想要的。
因此,如果 myDate 是 DateTime,请尝试:
[% IF myDate < date.now %]
如果它绝对是一个字符串,请尝试:
[% IF myDate < date.format('%Y-%m-%d') %]
希望有帮助。
更新
我指的是 perl DateTime 对象,而不是数据库中的字段是日期还是日期时间。通常,数据库日期或日期时间被 ORM(DBIC 或其他任何东西)“膨胀”到 perl DateTime 对象。您没有告诉我们足够多的关于myDate
知道的出处。我建议您在模板中显示myDate
并date.now
进一步调试,即:
[%- "myDate = "; myDate; " date.now = "; date.now; "<br/>";
myDate.strftime('I must be a DateTime object: %Y-%m-%d'); "<br/>";
date.now.strftime('I must be a DateTime object: %Y-%m-%d'); "<br/>"; -%]