如何在SpEL中进行日期操作?

时间:2012-03-22 23:30:04

标签: java spring spring-el date-manipulation

如何在Spring Expression语言中进行日期操作?

<si:service-activator id="entryReader" expression="@blogEntryReader.getEntriesBetweenDates(payload.startDate, payload.startDate **PLUS 30 DAYS**)" input-channel="blogEntryReaderChannel"/>

3 个答案:

答案 0 :(得分:3)

不幸的是,java.util.Calendar没有构建器API,因此它不是SpEL友好的。一种解决方案是使用辅助类......

public static class CalendarManip {

    public static Date addDays(Date date, int days) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_YEAR, 30);
        return cal.getTime();
    }
}

然后,在SpEL ......

T(foo.CalendarManip).addDays(payload.startDate, 30)

你也可以使用&lt; int-groovy:script /&gt;如果你不想要一个助手类。

答案 1 :(得分:1)

T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)

答案 2 :(得分:0)

如果您有访问权限,则可以通过编写所需的日期操作函数并将其注入SpelEvaluationContext来进行更为简洁的方法:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-ref-functions