Grails有3个干净的格式化标记库:
想知道是否有一个格式化HH:MM:SS?或者如果有另一种优雅的方式来格式化渲染视图中的秒数。
注意:
formatDate
不起作用,因为可能会有超过86400
的秒数。
因此,对于86461
formatDate
的持续时间,将返回00:01:01
,其中实际上应为24:01:01
。
答案 0 :(得分:0)
您可以创建一个标记库:将SecondsTagLib.groovy
放入grails-app/taglib/
(位置和类名中的后缀TagLib
都很重要。)
class SecondsTagLib {
def formatSeconds = {
attrs, body ->
final int hours = attrs.seconds / (60 * 60)
final int remainder = attrs.seconds % (60 * 60)
final int minutes = remainder / 60
final int seconds = remainder % 60
out << hours.toString().padLeft(2, "0") + ":" + minutes.toString().padLeft(2, "0") + ":" + seconds.toString().padLeft(2, "0")
}
}
并在您的视图中使用该taglib:
<html>
<body>
Seconds: ${seconds} = <g:formatSeconds seconds="${seconds}"/>
</body>
</html>
控制器的方法可能如下所示:
class TagLibController {
def seconds() {
// 10:11:01
def seconds = (10 * 60 * 60) + (11 * 60) + 1
def model = ["seconds": seconds]
render(view: "seconds", model: model)
}
}