这可能是一个愚蠢的问题,但是假设我的JSP页面中有一个变量seconds
,其值为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。在这一点上我有点无能为力。但我可能错过了一些东西。我希望这里有人对可能出现的问题有一个想法或暗示。
-edit
下面的代码最终使它工作。我不知道出了什么问题,因为它现在也在使用“/”。也许其他地方有些小错误。不过非常感谢你的时间:) Kudos!
<c:set var="min" value="${fn:substringBefore((seconds div 60), '.')}"/>
<fmt:formatNumber var="sec" pattern="##" value="${seconds mod 60)}"/>
答案 0 :(得分:9)
这(下面)应该是唯一安全的方法。 pattern =“##”不受支持,minIntegerDigits =“2”更容易,更清洁。
<c:set var="minutes" value="${fn:substringBefore(seconds div 60, '.')}"/>
<fmt:formatNumber var="seconds" minIntegerDigits="2" value="${ seconds - (minutes*60) }"/>
答案 1 :(得分:-1)
使用积分除法得到min
的值,而不是浮点除法:
<c:set var="min" value="${seconds div 60}" />
现在你得到min = 12,你不必担心四舍五入问题。