簡體   English   中英

如何在我的選擇框中列出日期格式為yyyy-mm-dd的月份值

[英]How can i list the month values in my select box with my date format yyyy-mm-dd

這是我的代碼:

<form>
    <table>
        <tr>
            <td>Month</td>
            <td>
                <select name="">
                    <option value="">January</option>
                    <option value="">February</option>
                    <option value="">March</option>
                    <option value="">April</option>
                    <option value="">May</option>
                    <option value="">June</option>
                    <option value="">July</option>
                    <option value="">August</option>
                    <option value="">September</option>
                    <option value="">October</option>
                    <option value="">November</option>
                    <option value="">December</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Year</td>
            <td><input type="text" name="year"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
</form>

我想將月份值放在選項值中。 假設2013-07-16是SimpleDateFormat中日期格式為yyyy-mm-dd的日期。 如何使用這種格式將7月或“07”的值放入我的選項值中。

<fmt:format var="month" value="${theDate}" pattern="MM"/>
<select name="">
    <option value="01" ${month == "01" ? "selected='selected'" : ""}>January</option>
    <option value="02" ${month == "02" ? "selected='selected'" : ""}>February</option>
    ...
</select>

但是,在此代碼中有很多重復,因此您最好在控制器中准備List<SelectableMonth> ,並迭代此列表:

 <select name="">
    <c:forEach var="month" items="${selectableMonths}">
        <option value="${month.number}" ${month.selected ? "selected='selected'" : ""}>${month.label}</option>
    </c:forEach>        
</select>

我多年沒有編寫任何JSP,但我認為這應該指向正確的方向:

<%@ taglib uri="http://java.sun.com/jstl/core"    prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt" %>

<%!
  String[] months = { "January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
%>

<form>
    <table>
        <tr>
            <td>Month</td>
            <td>
                <select name="">
                  <c-rt:forEach var="month" items="<%= months %>">
                      <option value="${i}">${months[i]}</option>
                  </c-rt:forEach>
                </select>
            </td>
        </tr>
        <tr>
            <td>Year</td>
            <td><input type="text" name="year"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
</form>

假設2013-07-16是SimpleDateFormat中日期格式為yyyy-mm-dd的日期。 如何使用這種格式將7月或“07”的值放入我的選項值中。

你的問題有點不清楚,但聽起來你問的是你是否有一個由String建模的日期值,以及一個匹配該值模式的SimpleDateFormat ,你如何修改格式以便以新的方式輸出它? 這就是你要找的東西嗎?

如果這就是您所要求的,那么您需要兩個以上的SimpleDateFormat實例來建模您想要使用的新格式 - 一個用於建模月份名稱,另一個用於數值。 然后,您可以使用parse(String source)方法將String轉換為Date並從那里重新格式化它。 如果你想采用這種方法,下面的內容應該可行。

如果采用這種方法,請注意拋出ParseException 如果可能的話,你最好從Date開始。

<%
    String today = "2013-07-16";
    SimpleDateFormat yearMonthDay = new SimpleDateFormat("yyyy-MM-dd");
    Date todaysDate = yearMonthDay.parse(today);

    String monthAsNumber = new SimpleDateFormat("MM").format(todaysDate);
    String monthAsFullName = new SimpleDateFormat("MMMMM").format(todaysDate);
%>

<select>
    <option value="<%= monthAsNumber %>"><%= monthAsFullName %></option>
</select> 

此外,最好從JSP中刪除這種類型的Java代碼以實現可測試性,重用等 - 您應該考慮使用JSTL函數,這將允許您將數據解析移動到單獨的類中然后使用bean來渲染每個日期需要顯示的兩個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM