January February March April May June July August September Octo-6ren">
gpt4 book ai didi

java - JSP 中的日期比较

转载 作者:行者123 更新时间:2023-11-27 22:28:30 25 4
gpt4 key购买 nike

我有 3 个组合框定义用户将输入的日期、月份和年份

<select name="date" style="width:inherit">
<%for(i=1;i<32;i++){%>
<option value="<%=i%>"><%=i%></option>
<%}%>
</select>
<span>
<span style="width:50%">
<select name="month" style="width:inherit">

<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>

</select>
</span>

<span style="width:24%">
<select name="year" style="width:inherit">
<%for(i=2000;i<2015;i++){%>
<option value="<%=i%>"><%=i%></option>
<%}%>
</select>

之后,表单发送到 doinsert.jsp 并尝试比较用户输入的日期和今天的日期。如果用户输入的日期早于今天,则变量 isPast 应为 <0。但是,当我尝试输入 Dec 20,2013(今天是 Dec 21,2013)时,变量 isPast 是 -1,这是正确的。当我尝试输入 Dec 25,2013(今天是 Dec 21,2013)时,变量 isPast 仍然是 -1,这是错误的(应该是 1)。当我尝试输入 2014 年 1 月 1 日(今天是 2013 年 12 月 21 日)时,变量 isPast 是 1,这是正确的。我在 doinsert.jsp 中有以下代码:

    String date=request.getParameter("date");
String month=request.getParameter("month");
String year=request.getParameter("year");

String concatdate=year+"-"+month+"-"+date;
SimpleDateFormat ft = new SimpleDateFormat("yyyy-mm-dd");
java.sql.Date newdate= new java.sql.Date(ft.parse(concatdate).getTime());
java.util.Date now=new java.util.Date();
int isPast=0;
isPast=newdate.compareTo(now);

怎么了? newdatenow 之间是否有任何不匹配的日期格式?

最佳答案

现在日期中去除时间部分。

你的解析模式是错误的:yyyy-mm-dd。
应该是 yyyy-MM-dd。

你们两个日期的类型也不一样。
您以非常复杂的方式完成所有这些工作。
不要使用java.sql.Date,你不需要它。

只需使用 java.util.Date 和这个方法。

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#compareTo%28java.util.Date%29

java.util.Date 类已经有了您需要的东西。

为了去除时间部分,您可以使用类似这样的东西。

public static Date removeTime(Date date) {
if (date == null)
return null;

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}

关于java - JSP 中的日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20717425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com