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 を取得します。

ここで、2 つをマージして結果を 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 に答える