javaWeb中,根据用户输入一个日期,查询一周日期(上周日,到本周六)。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaWeb中,根据用户输入一个日期,查询一周日期(上周日,到本周六)。相关的知识,希望对你有一定的参考价值。
例如:用户输入2010-08-25
得到的数据是: 22,23,24,25,26,27,28
input.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form action="showDate" method="post">
请输入日期 <input type="text" name="year" value="" size="4" />-
<input type="text" name="month" value="" size="2" />-
<input type="text" name="date" value="" size="2" />
<input type="submit" value="确定" />
</form>
</body>
</html>
servlet(showDate.java):
package cliff;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class showDate extends HttpServlet
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
String year, month, date;
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
year = request.getParameter("year");
month = request.getParameter("month");
date = request.getParameter("date");
//根据得到的请求参数,构建一个Calendar
Calendar c = Calendar.getInstance();
// 注意月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8
c.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(date));
//得到输入的日期是一周的第几天
int dow = c.get(Calendar.DAY_OF_WEEK);
//得到一周的第一天,也就是星期天的日期
c.add(Calendar.DATE, dow - 7);
out.println("得到的一周日期为");
for (int i = 0; i < 7; i++)
out.print(c.get(Calendar.DATE) + " ");
//继续使用Calendar的目的是为了防止跨月份的情况出现
c.add(Calendar.DATE, 1);
finally
out.close();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
processRequest(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
processRequest(request, response);
public String getServletInfo()
return "cliff's showDate servlet";
// </editor-fold>
功能达到,收工!
另:为了简便,这里面没有对错误输入进行处理。应该判断输入的是不是合法的年月日。。。。 参考技术A 可以用javascript来实现:
<HTML>
<HEAD>
</HEAD>
<BODY>
<script language="javascript">
function paintDateWeek(dateInputId,printId,linksLabel)
var dateIn=document.getElementById(dateInputId).value;
if(dateIn==null||dateIn=="undefined")return;
var dateNow=new Date(dateIn.replace(/-/g,"/"));
var dayNow=dateNow.getDay();
var dateWeek=new Array();
for(var i=0;i<7;i++)
dateWeek.push(new Date(dateNow.getTime()+(i-dayNow)*24*60*60*1000));
var str="";
for(var i=0;i<dateWeek.length;i++)
if(i==0)
str=dateWeek[i].getDate();
else
str=str+linksLabel+dateWeek[i].getDate();
alert(str);
if(printId!=null&&printId!="undefined")
document.getElementById(printId).innerHTML=str;
</script>
<input type="text" id="dateIn"/><input type="button" value="显示" onclick="paintDateWeek('dateIn','printDiv',',');"/>
<div id="printDiv"></div>
</BODY>
</HTML>
主要是paintDateWeek()这个函数,这个函数第一个参数就是输入日期的文本框的id,第二个表示要显示的数据的id,第三个表示这些数据间的连接形式
Java根据当前第几周获取周一和周日的日期方法
前言:
我们经常会遇到查询根据某日的日期查询数据,根据第几周查询数据,根据月份查询数据。但有的时候,接口可能需要一个开始日期和一个结束日期来查询相应的数据,然而前端的时间控件只能获取202213(2022年第13周)这样的入参,并不能给到我们13周的开始日期和结束日期,所以这时候就需要后端同学进行转换了。
今天这篇文章就讲解下如何根据第几周获取周一和周日的日期和根据月份获取第一天和最后一天。
正文:
1.根据第几周获取周一和周日的代码
使用注意点,周的日期的格式202213,中间有个判断单独拿出来讲下,就是判断本年第一周的剩余天数是否大于3,根据这个准则来判断这一周属于不属于今年的第一周。(这个准则是我们前端日期控件的判断准则,为了保持一致所以我这里也加了这个判断)
public static Map<String,String> getTheSpecifiedYearAndWeekDate(String date)
date = date.replace("-", "");
Integer year = Integer.valueOf(date.substring(0, 4));
Integer week = Integer.valueOf(date.substring(4, 6));
Map<String,String> timeMap=new HashMap<>();
Calendar calendar = Calendar.getInstance();
calendar.set(year, 0, 1);
int zhouji=calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//计算当年第一周还剩几天
int dayOfWeek = 0;
if (1==zhouji)
dayOfWeek=1;
if (2==zhouji)
dayOfWeek=7;
if (3==zhouji)
dayOfWeek=6;
if (4==zhouji)
dayOfWeek=5;
if (5==zhouji)
dayOfWeek=4;
if (6==zhouji)
dayOfWeek=3;
if (7==zhouji)
dayOfWeek=2;
System.out.println(dayOfWeek);
if(dayOfWeek>3)
week = week -2;
else
week = week -1;//周数减去第一周再减去要得到的周
calendar.add(Calendar.DAY_OF_YEAR, week *7+dayOfWeek);
timeMap.put("fisrstDay",new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_YEAR, 6);
timeMap.put("lastDay",new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
return timeMap;
2.根据当前月获取月初和月末的日期。
使用注意点,月的日期的格式202204
public static Map<String,String> getMonthBeginToEnd(String date)
Map<String,String> timeMap=new HashMap<>();
date = date.replace("-", "");
Integer year = Integer.valueOf(date.substring(0, 4));
Integer month = Integer.valueOf(date.substring(4, 6));
String fisrstDay = getFisrtDayOfMonth(year, month);
String lastDay = getLastDayOfMonth(year, month);
timeMap.put("fisrstDay",fisrstDay);
timeMap.put("lastDay",lastDay);
return timeMap;
总结:
我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有41234位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!
以上是关于javaWeb中,根据用户输入一个日期,查询一周日期(上周日,到本周六)。的主要内容,如果未能解决你的问题,请参考以下文章
使用当前日期生成一周的所有日期,还显示周一的周开始日期和周日的周末