定義:周日 --> 周六 為整的一周 。 每周從周日開始算起
業務需求:
1.每周的 周一 周二 周五 上課。
2.計算上完50節課後計算最後一天是日期。
Java代碼
package com.test;
import java.util.Calendar;
/**
* @author: polly
* @version:1.0
* @category:19/08/09
* @see:
* 定義:周日 --> 周六 為整的一周 。 每周從周日開始算起
* 業務需求:
* 1.每周的 周一 周二 周五 上課。
* 2.計算上完50節課後計算最後一天是日期。
*
* */
public class CalcTest {
//定義一周所要上課的天數。 定義為 周一 周二 周五 三天上課!
static final int HAVEClass_OF_WEEK = 3;
// 定義該課程為50節
static final int COURSENUM = 9 ;
public static void main(String [] args){
//定義上完全部所需要多少周,取整數
int weekCount = -1;
//取整後多余的天數
int surplusDay = -1;
//獲取上了多少次課.
int count = 0;
// 取整後所剩的課程數
int surplusClass = -1;
//上課所花的時間總數
int total = 0;
Calendar calendar=Calendar.getInstance();
//獲取今天是周幾
int weekdays = (calendar.get(Calendar.DAY_OF_WEEK)-1);
/* 定義一周中所要上課的天數,若上課一天count+1;
* 周一 周二 周五 上課
* 今天是周三,這個星期只有周五上課。
*/
switch (weekdays){
case 0:
case 1: //上課
count ++ ;
case 2: //上課
count ++ ;
case 3:
case 4:
case 5: //上課
count ++ ;
case 6:
break;
}
/*
* 計算今天是周幾,如果不是周末,則計算到周六還有幾天
* (因為從周日算成一周的開始)
*/
if(0 != weekdays)
surplusDay = 6 - weekdays;
//獲取上課所用多少周,取整
weekCount = (COURSENUM-count) / HAVEClass_OF_WEEK;
//獲取取整後剩下的課程數
surplusClass =(COURSENUM-count) - (weekCount * HAVEClass_OF_WEEK) ;
/*
* 計算取整周後剩下的課程數。 (從每周日開始算起)
* 若不剩課程,則日期-1 (因為取整後的最後一天為周六,不上課),
* 則計算周五的日期
* 若還剩1節課,肯定是 周一上課,所以天數+2天
* 若還剩2節課,則 周一 周二 上課,所以天數+3天
* 若還剩3節課,則 周一 周二 周五上課,所以天數+6天
*/
switch (surplusClass){
case 0:
surplusDay = surplusDay - 1;
break;
case 1:
surplusDay += 2;
break;
case 2:
surplusDay += 3;
break;
case 5:
surplusDay += 6;
break;
}
//要上課所用的總天數
total = surplusDay + (weekCount * 7) ;
//設置課程結束當天的日期
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+total);
//如果取整後所剩下的課程數為零,直接就是取周五的日期
System.out.println("學完這個課程的時間跨度是"+total+"天 , 上完課程後的日期: "+calendar.get(Calendar.YEAR)+"-"+(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.DATE)+" 星期:"+(calendar.get(Calendar.DAY_OF_WEEK)-1));
}