You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSP页面实现含日、月、年下拉框的日期输入功能

在JSP中实现日/月/年三下拉框日期输入字段

嘿,这事儿不难!我给你两种实现方式,一种是静态HTML写法(适合范围固定的场景),另一种是JSP动态生成选项(更灵活,比如自动生成年份范围),你可以按需选择:

方式一:静态HTML实现

如果日期范围不会经常变动,直接写死下拉框选项最省心:

<form action="your-submit-url.jsp" method="post">
  <label for="day">日:</label>
  <select id="day" name="day">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <!-- 省略6-30的选项,你可以手动补全 -->
    <option value="31">31</option>
  </select>

  <label for="month">月:</label>
  <select id="month" name="month">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
  </select>

  <label for="year">年:</label>
  <select id="year" name="year">
    <option value="2018">2018</option>
    <option value="2017">2017</option>
    <option value="2016">2016</option>
    <!-- 省略中间年份,手动补全到你需要的起始年份,比如2000 -->
    <option value="2000">2000</option>
  </select>

  <input type="submit" value="提交">
</form>

方式二:JSP动态生成选项

如果需要灵活调整年份范围,或者不想手动写几十个<option>,用JSP脚本动态生成更高效:

<%@ page import="java.util.Calendar" %>
<form action="your-submit-url.jsp" method="post">
  <label for="day">日:</label>
  <select id="day" name="day">
    <%-- 循环生成1-31的日期选项 --%>
    <% for (int i = 1; i <= 31; i++) { %>
      <option value="<%= i %>"><%= i %></option>
    <% } %>
  </select>

  <label for="month">月:</label>
  <select id="month" name="month">
    <%-- 定义月份英文名称数组,循环生成选项 --%>
    <% String[] monthNames = {"January", "February", "March", "April", "May", "June", 
                              "July", "August", "September", "October", "November", "December"}; %>
    <% for (int i = 0; i < monthNames.length; i++) { %>
      <option value="<%= i + 1 %>"><%= monthNames[i] %></option>
    <% } %>
  </select>

  <label for="year">年:</label>
  <select id="year" name="year">
    <%-- 动态生成2018及之前的年份,这里示例从2000到2018,可自行调整起始年 --%>
    <% int endYear = 2018; %>
    <% int startYear = 2000; %>
    <% for (int i = endYear; i >= startYear; i--) { %>
      <option value="<%= i %>"><%= i %></option>
    <% } %>
  </select>

  <input type="submit" value="提交">
</form>

小提醒:

  • 表单提交后,后台可以通过request.getParameter("day")、request.getParameter("month")、request.getParameter("year")获取三个字段的值,再组合成日期对象(比如LocalDate)。
  • 这种基础实现没有做日期合法性校验(比如2月没有30号),如果需要校验,可以在前端加JavaScript判断,或者在后台用Java代码处理。

内容的提问来源于stack exchange,提问作者Kkunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:14:50