java-8 - Freemarker 中的 Java.time (Java 8) 支持

标签 java-8 freemarker

有人知道在 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);
        }
    }
    
  • 将此方法放入模板模型中:

    templateModel.put("formatDateTime", new FormatDateTimeMethodModel());
  • 并在模板内调用此方法:

    ${formatDateTime(MY_DATE, 'HH:mm')}
  • 关于java-8 - Freemarker 中的 Java.time (Java 8) 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063276/

    相关文章:

    java - 如何以相反的顺序对 IntStream 进行排序

    html - accept-charset ="UTF-8"参数在表单中使用时不执行任何操作

    FreeMarker仅将Camel格式解析为Underline格式

    java - 免费标记模板如何在双 HashMap 中使用 for 语句

    freemarker - 如何在 freemarker 中打印除第一页以外的所有页面上的表格标题

    spring - @EnableWebFlux 注解的作用是什么

    Java 8 - 向需要泛型类型的方法提供原始类型参数会导致其返回类型被删除

    java - 终端操作(例如 forEach)是否可以重新抛出已检查的异常?

    java - 使用 Stream API Java 8 进行嵌套对象转换

    data-structures - 如何使用经典的自定义数据结构作为 Java 8 流