5

这可能是一个愚蠢的问题,但假设seconds我的 JSP 页面中有一个变量,其值为 779。现在我想通过执行以下操作将其转换为分钟和秒:

    <c:set var="${seconds / 60}" value="min"/>
    <c:set var="${seconds mod 60}" value="sec">

这样我得到 min = 12.983333 和 sec = 59.0。

现在我想合并两者并将结果显示为 12:59。我面临的问题是min不断四舍五入到 13。我尝试了很多事情,例如:

    <fmt:parseNumber var="minutes" integerOnly="true" type="number" value="${min}" />

    <fmt:formatNumber type="number" pattern="###" value="${min}" var="minutes" />

    fn:substringBefore(min, '.')

    maxFractionDigits="0"

    // and so on...

但他们都只是一致地返回 13。在这一点上,我有点不知所措。但我可能错过了一些东西。我希望这里有人对可能出现的问题有一个想法或提示。

-编辑

下面的代码使它最终工作。我不知道出了什么问题,因为它现在也可以使用“/”。也许其他地方有一些小错误。尽管如此,还是非常感谢您抽出宝贵的时间 :) 赞!

    <c:set var="min" value="${fn:substringBefore((seconds div 60), '.')}"/>  
    <fmt:formatNumber var="sec" pattern="##" value="${seconds mod 60)}"/>   
4

2 回答 2

9

这(下)应该是唯一安全的方法。pattern="##" 没有得到很好的支持,minIntegerDigits="2" 更简单更干净。

<c:set var="minutes" value="${fn:substringBefore(seconds div 60, '.')}"/> 
<fmt:formatNumber var="seconds" minIntegerDigits="2" value="${ seconds - (minutes*60) }"/>
于 2012-09-30T02:09:24.793 回答
-1

使用整数除法来获取 的值min,而不是浮点除法:

<c:set var="min" value="${seconds div 60}" />

现在你得到 min = 12,你不必担心舍入问题。

于 2012-06-17T08:48:26.417 回答