java - Stringtemplate - 如何将日期格式设置为语言环境格式

标签 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 被定义为 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/

    相关文章:

    java - 第二个按钮上的 OnClickListener 既没有正确初始化也没有按预期工作

    java - 客户端通过服务器与特定客户端通信

    java - 如何找到数组中变化最大的差异? - java

    vba - Excel - 从不同工作表和超链接上的单元格中提取数据

    python - 如何在 Python 中读取、编辑和另存为另一个 excel 文件?

    java - Glassfish 上的 Hibernate 不是实体异常

    excel - 编程 Excel

    Angular 2 - 在构造函数中构建日期 - 类型 'Date' 不可分配给类型 'string'

    javascript - 使用 getDate JavaScript 计算一个月中的天数

    swift - swift 以大写字母显示 AM/PM