首页 > 解决方案 > 在 Freemarker 中更改输出日期格式,而与输入格式无关

问题描述

${(.vars["OCRResponse"].Date)?datetime("ANY RANDOM FORMAT")?string("mm-dd-yy").

我们可以使用If Elsewithin ?datetime,还是可以通过使用 switch case 来解决这个问题?

标签: freemarker

解决方案


如果该日期格式非常“随机”,并且您需要经常这样做,那么您最好编写一个freemarker.core.TemplateDateFormat+TemplateDateFormatFactory实现,在 Java 中执行复杂的日期解析逻辑,然后将工厂注册为“自定义日期格式” (这是一个 FreeMarker 配置设置),让我们说 name "random"。然后你可以做${OCRResponse.Date?date.@random?string('MM-dd-yy')}。如果您将date_format配置设置设置为MM-dd-yy,那么您甚至可以只写${OCRResponse.Date?date.@random}.

您可以在此处找到定义自定义格式的具体示例:https ://freemarker.apache.org/docs/pgui_config_custom_formats.html

另一种可能是使用#if//当然#elseif#else如果您需要在多个地方执行此操作,则将您的解析器逻辑放入#function#return解析日期的位置。因此,在您插入日期的地方,您只会有类似的东西${parseRandom(OCRResponse.Date)}(这里我假设date_formatMM-dd-yy,否则添加?string('MM-dd-yy'))。


推荐阅读