java
  • jsp
  • jstl
  • 2014-01-30 37 views 0 likes 
    0

    我從Arrayist中獲取不同時間(例如05:25)作爲字符串並顯示在表中。我需要增加總時間。但下面的代碼拋出異常,因爲我試圖添加字符串。在JSTL中添加不同的時間

    <c:set var="total" value="${0}"/> 
    <c:forEach var="listItems" items="${requestScope.accTimeSheetList}"> 
    <tr> 
    <td><c:out value='${listItems.myTime}'/></td> (e.g. 05:25) 
    </tr> 
    <c:set var="total" value="${total + listItems.myTime}"/> 
    </c:forEach> 
    <td> 
    ${total} 
    </td> 
    

    請幫我解決這個問題。

    +0

    你不能添加這樣的時間。您應該使用適當的實用程序類來添加時間,並且只能在scriplet中完成,而不能在jstl中完成 – Reddy

    回答

    1

    我建議在Java中編寫一個後端方法來執行此操作,因爲它不是非常簡單,只需幾行JSTL代碼即可完成。

    Joda庫對於這些事情很有用。 (在Java 8中,新的java.time。*類可能更可取)。

    public class TimeUtils { 
    
        private static final PeriodFormatter HH_MM_FORMATTER = new PeriodFormatterBuilder() 
        .printZeroAlways() 
        .minimumPrintedDigits(2) 
        .appendHours() 
        .appendSeparator(":") 
        .printZeroAlways() 
        .minimumPrintedDigits(2) 
        .appendMinutes() 
        .toFormatter(); 
    
        private static final PeriodFormatter DD_HH_MM_FORMATTER = new PeriodFormatterBuilder() 
        .printZeroAlways() 
        .minimumPrintedDigits(2) 
        .appendDays() 
        .appendSeparator(":") 
        .printZeroAlways() 
        .minimumPrintedDigits(2) 
        .appendHours() 
        .appendSeparator(":") 
        .printZeroAlways() 
        .minimumPrintedDigits(2) 
        .appendMinutes() 
        .toFormatter(); 
    
        public static String addHhMmPeriods(List<String> hhMmPeriods) { 
        Period total = new Period(); 
        for (String hhMmPeriod : hhMmPeriods) { 
         total = total.plus(HH_MM_FORMATTER.parsePeriod(hhMmPeriod)); 
        } 
        return total.normalizedStandard().toString(DD_HH_MM_FORMATTER); 
        } 
    } 
    

    Java的使用示例:

    public static void main(String[] args) throws ParseException { 
        List<String> hhMmPeriods = new ArrayList<String>(); 
        hhMmPeriods.add("01:11"); 
        hhMmPeriods.add("11:00"); 
        hhMmPeriods.add("00:55"); 
        hhMmPeriods.add("21:47"); 
    
        System.out.println(TimeUtils.addHhMmPeriods(hhMmPeriods)); // => 01:10:53 
        } 
    

    然後,您可以在一個JSP標籤庫包裝這個方法,或者只使用一個JSP腳本直接調用Java方法。

    0

    可以以這種方式使用scriplet並確保您導入所有需要的軟件包在頁面

    <% 
    String myTime = "05:25"; 
    SimpleDateFormat df = new SimpleDateFormat("HH:mm"); 
    Date d = df.parse(myTime); 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(d); 
    cal.add(Calendar.MINUTE, 20); //adding 20 mins 
    String newTime = df.format(cal.getTime()); 
    %> 
    

    你只需要基於正確的邏輯寫信給你的情況是thexample

    相關問題