freemarker - 在 Freemarker 中更改输出日期格式,而与输入格式无关
问题描述
${(.vars["OCRResponse"].Date)?datetime("ANY RANDOM FORMAT")?string("mm-dd-yy").
我们可以使用If Else
within ?datetime
,还是可以通过使用 switch case 来解决这个问题?
解决方案
如果该日期格式非常“随机”,并且您需要经常这样做,那么您最好编写一个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_format
是MM-dd-yy
,否则添加?string('MM-dd-yy')
)。
推荐阅读
- kubernetes - 如何在 openshift OKD 上持久启动 mysql?
- java - 蓝牙连接不起作用 - 为什么会这样?
- r - rmarkdown::render() 不允许同时有多个用户?
- node.js - 如何在两个免费的测功机上运行我的 Node.js 网络服务器?
- node.js - 在firebase事务完成之前获得响应
- .htaccess - 使用查询字符串重定向到另一个域
- mongodb - 缺少的子文档变成具有未定义值的子文档,并且架构验证失败
- php - 如何在新闻源中显示关注者和登录用户的帖子?
- android - Android project cannot build with gradle after importing a module
- amazon-web-services - NAT 实例是否需要弹性 IP?