嗯,不直接。简单语言中的 date: 对象只能获取当前时间(或者您放置在标头中的某个时间值 - 您可以在 java 或类似语言中执行此操作。
但你也可以这样做。创建一个类:
public class YesterdayBean{
public String getYesterday(){
Calendar cal = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
cal.add(Calendar.DATE, -1);
return dateFormat.format(cal.getTime());
}
}
将其作为 bean 连接到您的 Camel(或 spring,如果您使用的话)注册表。如果您不确定如何操作,请查找registry http://camel.apache.org/registry.html和“使用”部分bean http://camel.apache.org/bean.
假设您在注册表中将该 bean 命名为“昨天”,
带弹簧:
<bean id="yesterday" class="some.package.YesterdayBean"/>
然后将其与文件组件一起使用。
.to("file:fo/bar?fileName=${bean:yesterday}")
如果这只是您需要的一个地方,并且您正在使用 Java DSL,那么您也可以使用 java 处理器预先创建日期并将其放在标头中。
像这样:
from("file:somewhere")
.process(new Processor(){
public void process(Exchange ex){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
ex.getIn().setHeader("yesterday",cal.getTime());
}
})
.to("file:target?fileName=${date:header.yesterday:dd-MM-yyyy}");
}