Java 日期操作实例
2009-09-17 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄧ粯銇勯幒瀣仾闁靛洤瀚伴獮鍥敍濮f寧鎹囬弻鐔哥瑹閸喖顬堝銈庡亝缁挸鐣烽崡鐐嶆棃鍩€椤掑嫮宓佸┑鐘插绾句粙鏌涚仦鎹愬闁逞屽墰閹虫捇锝炲┑瀣╅柍杞拌兌閻ゅ懐绱撴担鍓插剱妞ゆ垶鐟╁畷銉р偓锝庡枟閻撴洘銇勯幇闈涗簼缂佽埖姘ㄧ槐鎾诲礃閳哄倻顦板┑顔硷工椤嘲鐣烽幒鎴旀瀻闁规惌鍘借ⅵ濠电姷鏁告慨顓㈠磻閹剧粯鈷戞い鎺嗗亾缂佸鏁婚獮鍡涙倷閸濆嫮顔愬┑鐑囩秵閸撴瑦淇婇懖鈺冪<闁归偊鍙庡▓婊堟煛鐏炵硶鍋撻幇浣告倯闁硅偐琛ラ埀顒冨皺閺佹牕鈹戦悙鏉戠仸闁圭ǹ鎽滅划鏃堟偨缁嬭锕傛煕閺囥劌鐏犻柛鎰ㄥ亾婵$偑鍊栭崝锕€顭块埀顒佺箾瀹€濠侀偗婵﹨娅g槐鎺懳熺拠鑼舵暱闂備胶枪濞寸兘寮拠宸殨濠电姵纰嶉弲鎻掝熆鐠虹尨宸ョ€规挸妫濆铏圭磼濡搫顫嶇紓浣风劍閹稿啿鐣烽幋锕€绠婚悹鍥у级瀹撳秴顪冮妶鍡樺鞍缂佸鍨剁粋宥夋倷椤掍礁寮垮┑鈽嗗灣閸樠勭妤e啯鍊垫慨妯煎亾鐎氾拷

定义:周日 --> 周六 为整的一周 。 每周从周日开始算起
业务需求:
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));
}
更多精彩
赞助商链接