我正在使用Grails的Joda-Time插件,到目前为止它已经提供了巨大的帮助。比Java Date / Callendar方法有了很大的改进。无论如何,我使用GSP标签渲染Period数据如下:
<joda:formatPeriod value="${ shift?.totalTime }" fields="hours,minutes" />
标记将HTML呈现为11 hours and 32 minutes
。这很好,但我需要覆盖文本并将其更改为11hrs. 32min.
。
有没有人有这方面的经验?我没有找到任何例子,因为我用谷歌搜索了互联网。我认为这也有助于其他许多人。
顺便说一句:我非常感谢Joda-Time的创作者。它是我发现的最有用的库/插件之一。答案 0 :(得分:2)
如果您不关心本地化文本并且只有几小时和几分钟,那么一个简单的解决方案就是编写自己的小标签来进行格式化。类似的东西:
def formatPeriod = { attrs ->
def periodFormatter = new PeriodFormatterBuilder().appendHours().appendSuffix("hrs.").appendSeparator(" ").appendMinutes().appendSuffix("min.").toFormatter()
out << periodFormatter.print(attrs.value)
}
以下是groovy shell的示例输出:
groovy:000> period = new Period().withHours(11).withMinutes(32)
===> PT11H32M
groovy:000> formatter = PeriodFormat.wordBased()
===> org.joda.time.format.PeriodFormatter@6d2ddeee
groovy:000> formatter.print(period)
===> 11 hours and 32 minutes
groovy:000> periodFormatter = new PeriodFormatterBuilder().appendHours().appendSuffix("hrs.").appendSeparator(" ").appendMinutes().appendSuffix("min.").toFormatter()
===> org.joda.time.format.PeriodFormatter@56048075
groovy:000> periodFormatter.print(period)
===> 11hrs. 32min.
答案 1 :(得分:0)
查看PeriodTagLib的源代码,它似乎将其委托给JodaTime的基于单词的PeriodFormat,默认情况下使用org.joda.time.format.message bundle中的值。< / p>
您可以尝试在grails-app / i8n / messages.proprties中自己的消息包中定义这些键,但我怀疑这会起作用。
您可能必须在包含的来源中编辑捆绑包。 :/