Вы, наверное, сравниваете яблоки и орангутангов?
Является ли ваше значение 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, а не то, является ли поле в базе данных датой или датой и временем. Как правило, даты базы данных или даты и время «раздуваются» для Perl объектов DateTime с помощью ORM (DBIC или чего-то еще). Вы недостаточно рассказали нам о происхождении 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/>"; -%]
person
RET
schedule
23.05.2013