在模板工具包,我想添加一些文本的基础上,我的项目的日期是在过去,未来或今天。我从数据库中获取了一个名为myDate的字段,它是一个日期字段,如下所示。myDate: 2012-12-12
在我的模板中,我尝试这样做。但是当我尝试的时候,我不能让模板运行。有没有办法在模板工具包中做到这一点?
[% USE date %]
[% IF myDate < date.format %]
past
[% IF myDate > date.format %]
future
[% ELSE %]
today
[% END %]发布于 2013-05-24 07:55:08
你是不是在比较苹果和红毛猩猩?
您的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还是DateTime。通常,数据库日期或日期时间由对象关系管理(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/>"; -%]https://stackoverflow.com/questions/16725585
复制相似问题