大学课程表

有局限性,就是开始日期必须为某周的星期天开始;

实现:

例如--->

第三周开始   周三   第一节  第二节课  上C++;

第8周 周二不上高数课;

第10周 周5不上高数课;

调课按天调,并且应该是和周六周日调课,目前没听说如周五和周一调课的...

第10周的周4  ----> 11周  周六;

第8周的周3  ----> 11周  周日;

第5周 周三  大物  老师有事上不了,调到  第6周周三上午3,4节;

高数上到17周;

查询的话,一个是根据第几周查询,一个是根据日期查询;

package test1;


public class PingTest {
	enum weeks {
		SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
	}
	
	enum lessonNums {
		FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH, SEVENTH, EIGHTH, NINTH, TENTH
	}
	
	
	
	static String[][] schedule = new String[lessonNums.values().length][weeks.values().length];
	public static void main(String[] args) {
		String startTime = "2018-2-25 11:15:11";
		int weeksNum = 20;
		int week = 7;
		int term = weeksNum*week;
		System.out.println("学期开始时间:"+DateUtils.getDate_YYMMDD(startTime));
		System.out.println("学期结束时间:"+DateUtils.getDate_YYMMDD(DateUtils.addDays(startTime, term).toLocaleString()));
		DateUtils.addYears(startTime, term);
		System.out.println();
		//初始化
		init();
		//根据第几周查询  --->第一周
		showScheduleByWeekNum(1, startTime);
		//根据日期查询  --->2018-4-19 11:15:11
		queryByDate("2018-5-12 11:15:11", startTime);
		
		//全部打印
		for (int i = 0; i < weeksNum; i++) {
			//第三周开始   周三   第一节  第二节课  上C++
			addLesson(i, 3, 3, 1, "C++", schedule);
			addLesson(i, 3, 3, 2, "C++", schedule);
			boolean isSkip = false;
			//第8周 周二不上高数课
			/*if(i == removeLessons(i,8,2,"高数",schedule,startTime)){
				isSkip = true;
			}
			if(i == removeLessons(i,10,2,"高数",schedule,startTime)){
				isSkip = true;
			}
			
			//第10周的周4  ----> 11周  周六
			if(i == changeElement(i, 10, 4, 11, 6, schedule,startTime)){
				isSkip = true;
			}

			//第8周的周3  ----> 11周  周日
			if(i == changeElement(i, 8, 3, 11, 0, schedule,startTime)){
				isSkip = true;
			}*/
			//第8周 周二不上高数课
			removeLessons(i,8,2,"高数",schedule,startTime);
			//第10周 周5不上高数课
			removeLessons(i,10,5,"高数",schedule,startTime);
			/**
			 * 调课按天调,并且应该是和周六周日调课,目前没听说如周五和周一调课的。。。
			 * 如果不和周六周日调课代码需调整
			 */
			//第10周的周4  ----> 11周  周六
			changeElement(i, 10, 4, 11, 6, schedule,startTime);
			//第8周的周3  ----> 11周  周日
			changeElement(i, 8, 3, 11, 0, schedule,startTime);
			/**
			 * 比如第5周 周三  大物  老师有事上不了,调到  第6周周三上午3,4节
			 */
			removeLessons(i,5,3,"大物",schedule,startTime);
			addLessonOnce(i, 6, 3, 3, "大物", schedule);
			addLessonOnce(i, 6, 3, 4, "大物", schedule);
			
			printSchedule(i, startTime);
			//恢复
			init();
			
			//高数上到17周
			if(i == 16){
				removeElement("高数",schedule);
			}
			
		}
		
		
	}
	
	static void queryByDate(String queryTime,String startTime){
		int queryNum = (int) (DateUtils.DateSubtraction(queryTime, startTime)/7+1);
		System.out.println(queryTime+"是第"+queryNum+"周"+DateUtils.getWeekOfDate(queryTime));
		
		showScheduleByDate(queryNum-1, startTime, queryTime);
		showScheduleByWeekNum(queryNum, startTime);
	}
	
	static void showScheduleByWeekNum(int i, String startTime) {
		i--;
		//第三周开始   周三   第一节  第二节课  上C++
		addLesson(i, 3, 3, 1, "C++", schedule);
		addLesson(i, 3, 3, 2, "C++", schedule);
		//第8周 周二不上高数课
		removeLessons(i,8,2,"高数",schedule,startTime);
		//第10周 周5不上高数课
		removeLessons(i,10,5,"高数",schedule,startTime);
		/**
		 * 调课按天调,并且应该是和周六周日调课,目前没听说如周五和周一调课的。。。
		 * 如果不和周六周日调课代码需调整
		 */
		//第10周的周4  ----> 11周  周六
		changeElement(i, 10, 4, 11, 6, schedule,startTime);
		//第8周的周3  ----> 11周  周日
		changeElement(i, 8, 3, 11, 0, schedule,startTime);
		/**
		 * 比如第5周 周三  大物  老师有事上不了,调到  第6周周三上午3,4节
		 */
		removeLessons(i,5,3,"大物",schedule,startTime);
		addLessonOnce(i, 6, 3, 3, "大物", schedule);
		addLessonOnce(i, 6, 3, 4, "大物", schedule);
		
		printSchedule(i, startTime);
		//恢复
		init();
		
		//高数上到17周
		if(i == 16){
			removeElement("高数",schedule);
		}
		
	}
	
	private static void showScheduleByDate(int i, String startTime,String queryTime) {
		//第三周开始   周三   第一节  第二节课  上C++
		addLesson(i, 3, 3, 1, "C++", schedule);
		addLesson(i, 3, 3, 2, "C++", schedule);
		//第8周 周二不上高数课
		removeLessons(i,8,2,"高数",schedule,startTime);
		//第10周 周5不上高数课
		removeLessons(i,10,5,"高数",schedule,startTime);
		/**
		 * 调课按天调,并且应该是和周六周日调课,目前没听说如周五和周一调课的。。。
		 * 如果不和周六周日调课代码需调整
		 */
		//第10周的周4  ----> 11周  周六
		changeElement(i, 10, 4, 11, 6, schedule,startTime);
		//第8周的周3  ----> 11周  周日
		changeElement(i, 8, 3, 11, 0, schedule,startTime);
		/**
		 * 比如第5周 周三  大物  老师有事上不了,调到  第6周周三上午3,4节
		 */
		removeLessons(i,5,3,"大物",schedule,startTime);
		addLessonOnce(i, 6, 3, 3, "大物", schedule);
		addLessonOnce(i, 6, 3, 4, "大物", schedule);
		
		for (int k = 0; k < lessonNums.values().length; k++) {// 循环输出
				System.out.print(
						schedule[k][DateUtils.getWeekOfDate_Return_Int(queryTime)] + " | ");
			
		}
		System.out.println();
		//恢复
		init();
		
		//高数上到17周
		if(i == 16){
			removeElement("高数",schedule);
		}
		
	}
	
	static void addLesson(int i,int weekNum,int dayOfWeek,int lessonNum,String lessonName,String[][] schedule){
		if(i > (weekNum - 2)){
			schedule[lessonNum - 1][dayOfWeek] = lessonName;
		}
	}
	
	static void addLessonOnce(int i,int weekNum,int dayOfWeek,int lessonNum,String lessonName,String[][] schedule){
		if(i == (weekNum - 1)){
			schedule[lessonNum - 1][dayOfWeek] = lessonName;
		}
	}
	
	static int removeLessons(int i,int weekNum,int dayOfWeek,String lessonName,String[][] schedule,String startTime){
		if(i == (weekNum - 1)){
			removeElementForSoon(dayOfWeek,lessonName,schedule);
			/*printSchedule(i, startTime);
			//恢复
			init();*/
			return i;
		}
		return -1;
	}
	
	static int changeElement(int i,int exchangeWeek,int exchangeDayOfWeek,int exchangedWeek,int exchangedDayOfWeek,
			String[][] schedule,String startTime){
		if(i == (exchangeWeek -1)){
			//schedule[][4] = schedule[][6];
			changeColumn(exchangeDayOfWeek,exchangedDayOfWeek,schedule);
			/*printSchedule(i, startTime);
			//恢复
			init();*/
			return i;
		}
		//11周  周六
		if(i == (exchangedWeek - 1)){
//			schedule[][6] = schedule[][4];
			changeColumn(exchangedDayOfWeek,exchangeDayOfWeek,schedule);
			/*printSchedule(i, startTime);
			//恢复
			init();*/
			return i;
		}
		
		return -1;
	}
	
	static void changeColumn(int exchangeDayOfWeek,int exchangedDayOfWeek,String[][] schedule){
		for (int i = 0; i < lessonNums.values().length; i++) {
			schedule[i][exchangeDayOfWeek] = schedule[i][exchangedDayOfWeek];
		}
	}
	
	static String removeElementForSoon(int dayOfWeek, String element, String[][] schedule) {
		if (element == null)
			return "";
		for (int i = 0; i < lessonNums.values().length; i++) {// 循环输出
			if (element.equals(schedule[i][dayOfWeek])) {
				schedule[i][dayOfWeek] = "";
			}
		}
		return "";

	}
	
	static void removeElement(String element, String[][] schedule) {
		if (element == null)
			return;
		for (int i = 0; i < lessonNums.values().length; i++) {// 循环输出
			for (int j = 0; j < weeks.values().length; j++) {
				if (element.equals(schedule[i][j])) {
					schedule[i][j] = "";
				}
			}
		}
	}
	
	
	
	
	static void printSchedule(int weekNum,String startTime) {
		System.out.println("-------------------第"+(weekNum+1)+"周-------------------------------");
		System.out.println("*******************日期从:"+DateUtils.getDate_YYMMDD(DateUtils.addDays(startTime, weekNum*7).toLocaleString())+"*******************************");
		for (int i = 0; i < weeks.values().length; i++) {
			System.out.print(i + " \t ");
		}
		System.out.println();
		for (int i = 0; i < lessonNums.values().length; i++) {// 循环输出
			System.out.print(i + 1);
			for (int j = 0; j < weeks.values().length; j++) {
				System.out.print(schedule[i][j] + " \t ");
			}
			System.out.println();
		}
		System.out.println("*******************至:"+DateUtils.getDate_YYMMDD(DateUtils.addDays(startTime, (weekNum+1)*7-1).toLocaleString())+"*******************************");
		
	}
	static void init(){
		schedule[lessonNums.FIRST.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.SECOND.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.THIRD.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.FOURTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.FIFTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.SIXTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.NINTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.SUNDAY.ordinal()] = "";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.MONDAY.ordinal()] = "高数";
		schedule[lessonNums.SECOND.ordinal()][weeks.MONDAY.ordinal()] = "高数";
		schedule[lessonNums.THIRD.ordinal()][weeks.MONDAY.ordinal()] = "大物";
		schedule[lessonNums.FOURTH.ordinal()][weeks.MONDAY.ordinal()] = "大物";
		schedule[lessonNums.FIFTH.ordinal()][weeks.MONDAY.ordinal()] = "";
		schedule[lessonNums.SIXTH.ordinal()][weeks.MONDAY.ordinal()] = "";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.MONDAY.ordinal()] = "英语";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.MONDAY.ordinal()] = "英语";
		schedule[lessonNums.NINTH.ordinal()][weeks.MONDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.MONDAY.ordinal()] = "";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.TUESDAY.ordinal()] = "";
		schedule[lessonNums.SECOND.ordinal()][weeks.TUESDAY.ordinal()] = "";
		schedule[lessonNums.THIRD.ordinal()][weeks.TUESDAY.ordinal()] = "Java";
		schedule[lessonNums.FOURTH.ordinal()][weeks.TUESDAY.ordinal()] = "Java";
		schedule[lessonNums.FIFTH.ordinal()][weeks.TUESDAY.ordinal()] = "高数";
		schedule[lessonNums.SIXTH.ordinal()][weeks.TUESDAY.ordinal()] = "高数";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.TUESDAY.ordinal()] = "体育";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.TUESDAY.ordinal()] = "体育";
		schedule[lessonNums.NINTH.ordinal()][weeks.TUESDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.TUESDAY.ordinal()] = "";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		schedule[lessonNums.SECOND.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		schedule[lessonNums.THIRD.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		schedule[lessonNums.FOURTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		schedule[lessonNums.FIFTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "大物";
		schedule[lessonNums.SIXTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "大物";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "英语";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "英语";
		schedule[lessonNums.NINTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.WEDNESDAY.ordinal()] = "";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.THURSDAY.ordinal()] = "Java";
		schedule[lessonNums.SECOND.ordinal()][weeks.THURSDAY.ordinal()] = "Java";
		schedule[lessonNums.THIRD.ordinal()][weeks.THURSDAY.ordinal()] = "";
		schedule[lessonNums.FOURTH.ordinal()][weeks.THURSDAY.ordinal()] = "";
		schedule[lessonNums.FIFTH.ordinal()][weeks.THURSDAY.ordinal()] = "";
		schedule[lessonNums.SIXTH.ordinal()][weeks.THURSDAY.ordinal()] = "";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.THURSDAY.ordinal()] = "高数";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.THURSDAY.ordinal()] = "高数";
		schedule[lessonNums.NINTH.ordinal()][weeks.THURSDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.THURSDAY.ordinal()] = "";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.FRIDAY.ordinal()] = "Java";
		schedule[lessonNums.SECOND.ordinal()][weeks.FRIDAY.ordinal()] = "Java";
		schedule[lessonNums.THIRD.ordinal()][weeks.FRIDAY.ordinal()] = "";
		schedule[lessonNums.FOURTH.ordinal()][weeks.FRIDAY.ordinal()] = "";
		schedule[lessonNums.FIFTH.ordinal()][weeks.FRIDAY.ordinal()] = "";
		schedule[lessonNums.SIXTH.ordinal()][weeks.FRIDAY.ordinal()] = "";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.FRIDAY.ordinal()] = "体育";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.FRIDAY.ordinal()] = "体育";
		schedule[lessonNums.NINTH.ordinal()][weeks.FRIDAY.ordinal()] = "高数";
		schedule[lessonNums.TENTH.ordinal()][weeks.FRIDAY.ordinal()] = "高数";
		
		schedule[lessonNums.FIRST.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.SECOND.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.THIRD.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.FOURTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.FIFTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.SIXTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.SEVENTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.EIGHTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.NINTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
		schedule[lessonNums.TENTH.ordinal()][weeks.SATURDAY.ordinal()] = "";
	}
}

枚举类的ordinal方法听说最好别用,额。。。有空可以换下,这样看上去方便理解。。。

控制台输出:

学期开始时间:2018-02-25
学期结束时间:2018-07-15

-------------------第1周-------------------------------
*******************日期从:2018-02-25*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-03*******************************
2018-5-12 11:15:11是第11周星期六
Java | Java |    | |    | |    | |    | | 高数 | 高数 |    | |    | | 
-------------------第11周-------------------------------
*******************日期从:2018-05-06*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1C++ 	 高数 	    | 	 C++ 	 Java 	 Java 	 Java 	 
2C++ 	 高数 	    | 	 C++ 	 Java 	 Java 	 Java 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5大物 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6大物 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7英语 	 英语 	 体育 	 英语 	 高数 	 体育 	 高数 	 
8英语 	 英语 	 体育 	 英语 	 高数 	 体育 	 高数 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-05-12*******************************
-------------------第1周-------------------------------
*******************日期从:2018-02-25*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-03*******************************
-------------------第2周-------------------------------
*******************日期从:2018-03-04*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-10*******************************
-------------------第3周-------------------------------
*******************日期从:2018-03-11*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-17*******************************
-------------------第4周-------------------------------
*******************日期从:2018-03-18*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-24*******************************
-------------------第5周-------------------------------
*******************日期从:2018-03-25*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	  	    | 	    | 	    | 	 
6   | 	    | 	 高数 	  	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-03-31*******************************
-------------------第6周-------------------------------
*******************日期从:2018-04-01*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	 大物 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	 大物 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-04-07*******************************
-------------------第7周-------------------------------
*******************日期从:2018-04-08*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-04-14*******************************
-------------------第8周-------------------------------
*******************日期从:2018-04-15*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	    | 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	  	    | 	    | 	    | 	    | 	 
6   | 	    | 	  	    | 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	    | 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	    | 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-04-21*******************************
-------------------第9周-------------------------------
*******************日期从:2018-04-22*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-04-28*******************************
-------------------第10周-------------------------------
*******************日期从:2018-04-29*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	    | 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	    | 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	    | 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	    | 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	  	    | 	 
10   | 	    | 	    | 	    | 	    | 	  	    | 	 
*******************至:2018-05-05*******************************
-------------------第11周-------------------------------
*******************日期从:2018-05-06*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1C++ 	 高数 	    | 	 C++ 	 Java 	 Java 	 Java 	 
2C++ 	 高数 	    | 	 C++ 	 Java 	 Java 	 Java 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5大物 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6大物 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7英语 	 英语 	 体育 	 英语 	 高数 	 体育 	 高数 	 
8英语 	 英语 	 体育 	 英语 	 高数 	 体育 	 高数 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-05-12*******************************
-------------------第12周-------------------------------
*******************日期从:2018-05-13*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-05-19*******************************
-------------------第13周-------------------------------
*******************日期从:2018-05-20*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-05-26*******************************
-------------------第14周-------------------------------
*******************日期从:2018-05-27*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-06-02*******************************
-------------------第15周-------------------------------
*******************日期从:2018-06-03*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-06-09*******************************
-------------------第16周-------------------------------
*******************日期从:2018-06-10*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-06-16*******************************
-------------------第17周-------------------------------
*******************日期从:2018-06-17*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-06-23*******************************
-------------------第18周-------------------------------
*******************日期从:2018-06-24*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	  	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	  	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	  	 大物 	    | 	    | 	    | 	 
6   | 	    | 	  	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	  	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	  	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	  	    | 	 
10   | 	    | 	    | 	    | 	    | 	  	    | 	 
*******************至:2018-06-30*******************************
-------------------第19周-------------------------------
*******************日期从:2018-07-01*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-07-07*******************************
-------------------第20周-------------------------------
*******************日期从:2018-07-08*******************************
0 	 1 	 2 	 3 	 4 	 5 	 6 	 
1   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
2   | 	 高数 	    | 	 C++ 	 Java 	 Java 	    | 	 
3   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
4   | 	 大物 	 Java 	    | 	    | 	    | 	    | 	 
5   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
6   | 	    | 	 高数 	 大物 	    | 	    | 	    | 	 
7   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
8   | 	 英语 	 体育 	 英语 	 高数 	 体育 	    | 	 
9   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
10   | 	    | 	    | 	    | 	    | 	 高数 	    | 	 
*******************至:2018-07-14*******************************

尽力了。。。排版问题,还是变形了。。。已经把init()里的""换成"  |"。。。

DateUtils工具类:

package test1;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
	/**
	 * 年份加减
	 * @param date - 日期
	 * @param nums - 增减的数值
	 * @return Date类型
	 */
	public static Date addYears(Date date, int nums) {
		Calendar Cal = java.util.Calendar.getInstance();
		Cal.setTime(date);
		Cal.add(Calendar.YEAR, nums);
		return Cal.getTime();
	}
    /**
     * 年份加减
     * @param date - 日期
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addYears_Return_String(Date date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addYears(date,nums));
	}
    /**
     * 年份加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return Date类型
     */
	public static Date addYears(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return addYears(sdf.parse(date),nums);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
    /**
     * 年份加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addYears_Return_String(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addYears(date,nums));
	}
	/**
	 * 月份加减
	 * @param date - 日期
	 * @param nums - 增减的数值
	 * @return Date类型
	 */
	public static Date addMonths(Date date, int nums) {
		Calendar Cal = java.util.Calendar.getInstance();
		Cal.setTime(date);
		Cal.add(Calendar.MONTH, nums);
		return Cal.getTime();
	}
	/**
     * 月份加减
     * @param date - 日期
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addMonths_Return_String(Date date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addMonths(date,nums));
	}
	/**
     * 月份加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return Date类型
     */
	public static Date addMonths(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return addMonths(sdf.parse(date),nums);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	/**
     * 月份加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addMonths_Return_String(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addMonths(date,nums));
	}
	/**
	 * 日期加减
	 * @param date - 日期
	 * @param nums - 增减的数值
	 * @return Date类型
	 */
	public static Date addDays(Date date, int nums) {
		Calendar Cal = java.util.Calendar.getInstance();
		Cal.setTime(date);
		Cal.add(Calendar.DATE, nums);
		return Cal.getTime();
	}
	/**
     * 日期加减
     * @param date - 日期
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addDays_Return_String(Date date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addDays(date,nums));
	}
	/**
     * 日期加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return Date类型
     */
	public static Date addDays(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return addDays(sdf.parse(date),nums);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	/**
     * 日期加减
     * @param date - 日期字符串
     * @param nums - 增减的数值
     * @return String类型
     */
	public static String addDays_Return_String(String date, int nums) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(addDays(date,nums));
	}

	/**
	 * 获取日期的星期几
	 * @param dt - Date
	 * @return 星期几
	 */
	public static String getWeekOfDate(Date dt) {
		String[] weekDays = { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance();
		cal.setTime(dt);

		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;

		return weekDays[w];
	}
	/**
	 * 获取日期的星期几
	 * @param dt - Date
	 * @return 星期几
	 */
	public static int getWeekOfDate_Return_Int(Date dt) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(dt);

		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;

		return w;
	}
	
    /**
     * 获取日期的星期几
     * @param dt
     * @return 星期几
     */
    
	public static String getWeekOfDate(String dt) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return getWeekOfDate(sdf.parse(dt));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	/**
	 * 获取日期的星期几
	 * @param dt - Date
	 * @return 星期几
	 */
	public static int getWeekOfDate_Return_Int(String dt) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return getWeekOfDate_Return_Int(sdf.parse(dt));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;
	}
	/**
	 * 获取日期格式YYYYMMDD
	 * 
	 * @param dt
	 * @return YYYYMMDD
	 */
	public static String getDate_YYMMDD(Date dt){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			return sdf.format(dt);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
	}
	/**
	 * 获取日期格式YYYYMMDD
	 * 
	 * @param dt
	 * @return YYYYMMDD
	 */
	public static String getDate_YYMMDD(String dt){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			return getDate_YYMMDD(sdf.parse(dt));
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static long DateSubtraction(String s1,String s2){
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
		Date d1 = null;
		Date d2 = null;
		try {
			d1 = df.parse(s1);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}  
	    try {
			d2 = df.parse(s2);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}  
	    long diff = d1.getTime() - d2.getTime();
		
	    return (diff / (1000 * 60 * 60 * 24));
		
	}
	
}

基本这样;

写的不好之处还请多多指教~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值