有局限性,就是开始日期必须为某周的星期天开始;
实现:
例如--->
第三周开始 周三 第一节 第二节课 上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));
}
}
基本这样;
写的不好之处还请多多指教~