Stringtemplate - 如何将日期格式设置为区域设置格式

时间:2017-07-04 14:05:06

标签: java excel date date-format stringtemplate-4

我正在使用基于Stringtemplate4(ST)的ExcelExplorer处理Excel文件。 这些文件包含多个带日期的列。 默认情况下,日期以“MM / dd / yy”日期格式呈现。

有没有办法将日期呈现为“dd / MM / yyyy”?

我尝试过几种方式:

  • 我尝试通过命令行定义它,但没有成功。
    • 定义LC_ALL = fr_FR不起作用。
    • 定义LC_TIME =“dd / MM / yyyy”不起作用。 请参阅Setting java locale settings
    • 使用以下命令行选项调用java不起作用。

java -Duser.language = fr -Duser.country = FR -Duser.variant = UTF-8 ......

我尝试了以下模板但没有成功:

renderRow(row) ::= <<

<row.MyDate; format="dd/MM/yyyy"> 
>>

虽然属性MyDate被定义为日期类型,但上述方法不起作用。我不想像Format date in String Template email

中提出的那样将MyDate定义为Java中的Date类型

注意:检查后,我发现ExcelExporter / ST将属性MyDate定义为日期类型!

以下模板也不起作用:

renderRow(row; format="dd/MM/yyyy") ::= <<

<row.MyDate> 
>>

1 个答案:

答案 0 :(得分:0)

您需要为要格式化的每个类将渲染器添加到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