我想在JSP页面上做一个下拉框,里面的内容是时间区间,时间是从2007-05-26开始
下拉框的内容如:
20070526~20070601
20070602~20070608
20070609~20070615
...
以此类推,一个选项中都是间隔7天
aaaaaaaa~bbbbbbbb当bbbbbbbb大于当前日期的时候,循环结束
这个问题想了很久还是没解决,请各位高手帮忙下,在线等~~~

解决方案 »

  1.   

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><jsp:useBean id="now" class="java.util.Date" />
    <jsp:useBean id="now" class="java.util.Date" />
    <fmt:parseDate var="past" value="05262007" pattern="MM/dd/yyyy" /><select name="week">
      <c:forEach var="timeValue" begin="${past.time}" end="${now.time}" step="604800000l">
        <option>
          <jsp:setProperty name="it" property="time" value="${timeValue}" />
          <fmt:formatDate value="${it}" type="date" dateStyle="full"/>~
          <jsp:setProperty name="it" property="time" value="${it.time + 604800000l}" />
          <fmt:formatDate value="${it}" type="date" dateStyle="full"/>
        </option>
      </c:forEach>
    </select> 没试过,应该差不多。
      

  2.   

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><jsp:useBean id="now" class="java.util.Date" />
    <jsp:useBean id="it" class="java.util.Date" />
    <fmt:parseDate var="past" value="05262007" pattern="MM/dd/yyyy" /><select name="week">
      <c:forEach var="timeValue" begin="${past.time}" end="${now.time}" step="604800000l">
        <option>
          <jsp:setProperty name="it" property="time" value="${timeValue}" />
          <fmt:formatDate value="${it}" type="date" dateStyle="full"/>~
          <jsp:setProperty name="it" property="time" value="${it.time + 604800000l}" />
          <fmt:formatDate value="${it}" type="date" dateStyle="full"/>
        </option>
      </c:forEach>
    </select> 没试过,应该差不多。 
    改正一下,第二个now应该是it.
      

  3.   

    以上的代码怎么有java.lang.NumberFormatException: For input string: "${past.time}"错误呢
      

  4.   

    用JSTL看起来蛮不错的, 不过我一般都是直接写Java代码...
      

  5.   

    用JSTL看起来蛮不错的, 不过我一般都是直接写Java代码...
    ------------
    可以不可以帮忙下
      

  6.   

    <fmt:parseDate var="past" value="05262007" pattern="MM/dd/yyyy" / > 错了,应该是:<fmt:parseDate var="past" value="05/26/2007" pattern="MM/dd/yyyy" / > 
    有一点不确定的是,step 要用int,${past.time} 这是个long,不确定行不行。不行的话你就插点scriptlet。
      

  7.   

    很感谢楼上的,还是有错误,step="604800000l",好像这个int的太长了
      

  8.   

    我居然写了这么多代码 惭愧啊 
    [code]
    <%@ page contentType="text/html; charset=GBK" import="java.util.*,java.text.*,bean.stu" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html>
    <head>
    <title>
    jsp1
    </title>
    </head>
    <body>
    <%
    SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
    Calendar begin=Calendar.getInstance();
    begin.set(Calendar.MONTH,4);
    begin.set(Calendar.DATE,26);Calendar end=Calendar.getInstance();
    end.set(Calendar.MONTH,11);
    end.set(Calendar.DATE,20);ArrayList list=new ArrayList();
    while(begin.getTime().before(end.getTime()))
    {
      String str=format.format(begin.getTime())+"~";
      begin.add(Calendar.DATE,7);
      str+=format.format(begin.getTime());
      list.add(str);
      begin.add(Calendar.DATE,1);
      
    }pageContext.setAttribute("list",list);
    %><select>
    <c:forEach items="${list}" var="date">
    <option>${date}</option>
    </c:forEach>
    </select>
    </body>
    </html>
    [/code]
      

  9.   

    <%@ page contentType="text/html; charset=GBK" import="java.util.*,java.text.*,bean.stu" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html>
    <head>
    <title>
    jsp1
    </title>
    </head>
    <body>
    <%
    SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
    Calendar begin=Calendar.getInstance();
    begin.set(Calendar.MONTH,4);
    begin.set(Calendar.DATE,26);Calendar end=Calendar.getInstance();
    end.set(Calendar.MONTH,11);
    end.set(Calendar.DATE,20);ArrayList list=new ArrayList();
    while(begin.getTime().before(end.getTime()))
    {
      String str=format.format(begin.getTime())+"~";
      begin.add(Calendar.DATE,7);
      str+=format.format(begin.getTime());
      list.add(str);
      begin.add(Calendar.DATE,1);
      
    }pageContext.setAttribute("list",list);
    %><select>
    <c:forEach items="${list}" var="date">
    <option>${date}</option>
    </c:forEach>
    </select>
    </body>
    </html>