我正在使用基于 Stringtemplate4 (ST) 的 ExcelExplorer 处理 Excel 文件。
这些文件包含几个带有日期的列。
默认情况下,日期按照“MM/dd/yy”日期格式呈现。
有没有办法将日期呈现为“dd/MM/yyyy”?
我已经尝试了几种方法:
见 Setting java locale settings
java -Duser.language=fr -Duser.country=FR -Duser.variant=UTF-8 ...
我尝试了以下模板但没有成功:
renderRow(row) ::= <<
<row.MyDate; format="dd/MM/yyyy">
>>
虽然属性 MyDate 被定义为 Date 类型,但上面的方法不起作用。我不想按照 Format date in String Template email 中的建议将 MyDate 定义为 Java 中的 Date 类型。
注意:经过检查,我发现 ExcelExporter/ST 将属性 MyDate 定义为 Date 类型!
以下模板也不起作用:
renderRow(row; format="dd/MM/yyyy") ::= <<
<row.MyDate>
>>
最佳答案
您需要为您要格式化的每个类添加一个渲染器到您的 STGroup:
dir = STGroupDir(templateDirectory, '$', '$')
dir.registerRenderer(Number.class, NumberRenderer())
dir.registerRenderer(Date.class, DateRenderer())
现在,在我的模板中,我可以使用
<row.MyDate; format="dd/MM/yyyy">
格式字符串与 java.text.SimpleDateFormat
一起使用或者
<row.MyNumber; format="%,d">
格式字符串与 java.util.Formatter
一起使用如果您需要自定义格式化程序,请查看
DateRenderer
,创建自己的将非常简单。这是文档:
https://github.com/antlr/stringtemplate4/blob/master/doc/renderers.md
关于java - Stringtemplate - 如何将日期格式设置为语言环境格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908087/