在模板工具包中,我想根据项目的日期是过去,未来还是今天来添加一些文本。 我从数据库中获取一个名为myDate的字段 这是一个如下所示的日期字段。 myDate:2012-12-12
在我的模板中,我试图做这样的事情。但是当我尝试时,我无法运行模板。有没有办法在模板工具包中执行此操作?
[% USE date %]
[% IF myDate < date.format %]
past
[% IF myDate > date.format %]
future
[% ELSE %]
today
[% END %]
答案 0 :(得分:2)
你是在比较苹果和红毛猩猩吗?
您的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/>"; -%]