gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:12:34 27 4
gpt4 key购买 nike

我正在使用基于 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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com