2012-06-17 88 views
4

這可能是一個愚蠢的問題,但我們假設我的JSP頁面中有一個變量seconds,它的值是779.現在我想通過執行以下操作將它轉換爲分鐘和秒鐘:JSTL Round off/down number

<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)}"/> 

回答

8

這(下)應該是唯一安全的方法。 pattern =「##」得不到很好的支持,minIntegerDigits =「2」更容易和更清晰。

<c:set var="minutes" value="${fn:substringBefore(seconds div 60, '.')}"/> 
<fmt:formatNumber var="seconds" minIntegerDigits="2" value="${ seconds - (minutes*60) }"/> 
+0

'FN:substringBefore'是要走的路。謝謝! – asgs

0

使用整數分頻得到的值min,而不是浮點除法:

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

現在你分鐘= 12,你不必擔心四捨五入問題。

+8

您好,這並不爲我工作,''給我2.9 – Ankur