Grails 持续时间格式化标签库
Grails time duration formatting tag library
Grails 有 3 个干净的格式化标签库:
- 格式日期
- 格式编号
- 格式布尔值
想知道是否有将秒格式化为 HH:MM:SS 的方法?或者如果有另一种优雅的方式来格式化渲染视图中的秒数。
注:
formatDate
不起作用,因为秒数可能比 86400
多。
因此,在 86461
的持续时间内,formatDate
将 return 变成 00:01:01
,而实际上它应该是 24:01:01
.
您可以创建一个标签库:将 SecondsTagLib.groovy
放入 grails-app/taglib/
(位置和 class 名称中的后缀 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")
}
}
并在您的视图中使用该标签库:
<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)
}
}
Grails 有 3 个干净的格式化标签库:
- 格式日期
- 格式编号
- 格式布尔值
想知道是否有将秒格式化为 HH:MM:SS 的方法?或者如果有另一种优雅的方式来格式化渲染视图中的秒数。
注:
formatDate
不起作用,因为秒数可能比 86400
多。
因此,在 86461
的持续时间内,formatDate
将 return 变成 00:01:01
,而实际上它应该是 24:01:01
.
您可以创建一个标签库:将 SecondsTagLib.groovy
放入 grails-app/taglib/
(位置和 class 名称中的后缀 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")
}
}
并在您的视图中使用该标签库:
<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)
}
}