在Freemarker更改输出日期格式,而不考虑输入格式

时间:2018-09-28 10:33:46

标签: freemarker

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

我们可以在If Else中使用?datetime,还是可以通过使用切换大小写来解决此问题?

1 个答案:

答案 0 :(得分:1)

如果该日期格式相当“随机”,并且您需要执行很多操作,那么最好编写一个freemarker.core.TemplateDateFormat + TemplateDateFormatFactory实现,在其中执行复杂的日期解析逻辑Java,然后将工厂注册为“自定义日期格式”(这是FreeMarker配置设置),假设名称为"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'))。