1

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

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

3 回答 3

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)

如果您不想要辅助类,也可以使用 <int-groovy:script/> 。

于 2012-03-23T00:41:02.013 回答
1
T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)
于 2014-06-10T13:13:09.407 回答
0

如果你有一个更简洁的方法来做到这一点,那就是编写你需要的日期操作函数并将它们注入到 SpelEvaluationContext 中:

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

于 2016-08-11T14:26:32.930 回答