- package cn.example.mapper;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- public class DateUtil {
- public static void main(String[] args) {
- try {
- System.out.println("有" + getMondayNumber("2017-02-03","2017-02-16",5) + "个");
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- /**
- * 查询日期间有几天一周中的某一天
- * 日期格式 yyyy-MM-dd yyyy-MM-dd 1-7(表示周一到周日)
- * @param startDay 准备查询的起始日期
- * @param endDay 准备查询的结束日期
- * @param dayOfWeek 准备查的一周中的某一天(准备查周几?)
- * @return 包含所查周几的天数
- * @throws ParseException 不支持跨年查询、不支持结束日期早于起始日期、周几输入错误等
- */
- public static intgetMondayNumber(String startDay,String endDay,intdayOfWeek)throws ParseException{
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- intdifferenceDay = 0;
- //转换起始日期Date startDate = sdf.parse(startDay);
- //转换结束日期Date endDate = sdf.parse(endDay);
- //实例化起始和结束Calendar对象Calendar startCalendar = Calendar.getInstance();
- Calendar endCalendar = Calendar.getInstance();
- //分别设置Calendar对象的时间
- startCalendar.setTime(startDate);
- endCalendar.setTime(endDate);
- //定义起始日期和结束日期分别属于第几周
- intstartWeek = startCalendar.get(Calendar.WEEK_OF_YEAR);
- intendWeek = endCalendar.get(Calendar.WEEK_OF_YEAR);
- //拿到起始日期是星期几
- intstartDayOfWeek = startCalendar.get(Calendar.DAY_OF_WEEK);
- if(startDayOfWeek == 1) {
- startDayOfWeek = 7;
- startWeek--;
- }elsestartDayOfWeek--;
- //拿到结束日期是星期几
- intendDayOfWeek = endCalendar.get(Calendar.DAY_OF_WEEK);
- if(endDayOfWeek == 1) {
- endDayOfWeek = 7;
- endWeek--;
- }elseendDayOfWeek--;
- //计算相差的周数
- intdifferenceWeek = endWeek - startWeek;
- //开始计算
- if(startDayOfWeek <= dayOfWeek) {
- if(endDayOfWeek >= dayOfWeek)
- differenceDay = differenceWeek + 1;
- }else if(startDayOfWeek > dayOfWeek) {
- if(endDayOfWeek < dayOfWeek)
- differenceDay = differenceWeek-1;
- }else {
- differenceDay = differenceWeek;
- }
- return differenceDay;
- }
- }
来源: http://www.bubuko.com/infodetail-1950616.html