有人知道有任何计划支持FreeMarker中的新java.time api吗?或者是否有任何代码用于支持ZonedDateTime,LocalDateTime和Instant等类?
不难看出自己如何实现这些东西,但这实际上是一项相当大的任务.
假设您要格式化新的日期/时间对象
创建自定义方法:
public static class FormatDateTimeMethodModel
implements TemplateMethodModelEx {
public Object exec(List args) throws TemplateModelException {
if (args.size() != 2) {
throw new TemplateModelException("Wrong arguments");
}
TemporalAccessor time = (TemporalAccessor) ((StringModel) args.get(0)).getWrappedObject();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(((SimpleScalar) args.get(1)).getAsString());
return formatter.format(time);
}
}
Run Code Online (Sandbox Code Playgroud)将此方法放入模板模型:
templateModel.put(“ formatDateTime”,新的FormatDateTimeMethodModel());
并在模板内部调用此方法:
$ {formatDateTime(MY_DATE,'HH:mm')}
目前没有人处理这个问题(2.3.24),尽管已知它丢失了。正确执行可能并不简单,除非java.util.Date在返回时将 Java 8 日期/时间类型降级为 -sTemplateDateModel是可以接受的。
顺便说一句,我已将其添加到http://freemarker.org/contribute.html,这样就不会被忘记。