CalendarUtil‏

packagecom.iwode.common; importjava.text.DateFormat; importjava.text.ParsePosition; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.GregorianCalendar; /** *常用日历操作辅助类 *@authorsteven2010-08-10 *@email:qing.tan@iwode.com */ publicclassCalendarUtil{ //用来全局控制上一周,本周,下一周的周数变化 privateintweeks=0; privateintMaxDate;//一月最大天数 privateintMaxYear;//一年最大天数 privatestaticCalendarcalendar=Calendar.getInstance();//实例化日历 /**测试 *@paramargs */ publicstaticvoidmain(String[]args){ CalendarUtiltt=newCalendarUtil(); System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd")); System.out.println("获取本周一日期:"+tt.getMondayOFWeek()); System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday()); System.out.println("获取上周一日期:"+tt.getPreviousWeekday()); System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday()); System.out.println("获取下周一日期:"+tt.getNextMonday()); System.out.println("获取下周日日期:"+tt.getNextSunday()); System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd")); System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth()); System.out.println("获取本月最后一天日期:"+tt.getDefaultDay()); System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst()); System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd()); System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst()); System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd()); System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst()); System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd()); System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst()); System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd()); System.out.println("获取明年第一天日期:"+tt.getNextYearFirst()); System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd()); System.out.println("获取本季度第一天:"+tt.getThisSeasonFirstTime(11)); System.out.println("获取本季度最后一天:"+tt.getThisSeasonFinallyTime(11)); System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:" +CalendarUtil.getTwoDay("2008-12-1","2008-9-29")); System.out.println("---------------->"); System.out.println("获取当前月的第几周:"+tt.getWeekOfMonth()); System.out.println("获取当前年份:"+tt.getYear()); System.out.println("获取当前月份:"+tt.getMonth()); System.out.println("获取今天在本年的第几天:"+tt.getDayOfYear()); System.out.println("获得今天在本月的第几天(获得当前日):"+tt.getDayOfMonth()); System.out.println("获得今天在本周的第几天:"+tt.getDayOfWeek()); System.out.println("获得半年后的日期:"+tt.convertDateToString(tt.getTimeYearNext())); } /** *获得当前年份 * *@return */ publicstaticintgetYear(){ returncalendar.get(Calendar.YEAR); } /** *获得当前月份 * *@return */ publicstaticintgetMonth(){ returncalendar.get(Calendar.MONTH)+1; } /** *获得今天在本年的第几天 * *@return */ publicstaticintgetDayOfYear(){ returncalendar.get(Calendar.DAY_OF_YEAR); } /** *获得今天在本月的第几天(获得当前日) * *@return */ publicstaticintgetDayOfMonth(){ returncalendar.get(Calendar.DAY_OF_MONTH); } /** *获得今天在本周的第几天 * *@return */ publicstaticintgetDayOfWeek(){ returncalendar.get(Calendar.DAY_OF_WEEK); } /** *获得今天是这个月的第几周 * *@return */ publicstaticintgetWeekOfMonth(){ returncalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); } /** *获得半年后的日期 * *@return */ publicstaticDategetTimeYearNext(){ calendar.add(Calendar.DAY_OF_YEAR,183); returncalendar.getTime(); } publicstaticStringconvertDateToString(DatedateTime){ SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); returndf.format(dateTime); } /** *得到二个日期间的间隔天数 */ publicstaticStringgetTwoDay(Stringsj1,Stringsj2){ SimpleDateFormatmyFormatter=newSimpleDateFormat("yyyy-MM-dd"); longday=0; try{ java.util.Datedate=myFormatter.parse(sj1); java.util.Datemydate=myFormatter.parse(sj2); day=(date.getTime()-mydate.getTime())/(24*60*60*1000); }catch(Exceptione){ return""; } returnday+""; } /** *根据一个日期,返回是星期几的字符串 * *@paramsdate *@return */ publicstaticStringgetWeek(Stringsdate){ //再转换为时间 Datedate=CalendarUtil.strToDate(sdate); Calendarc=Calendar.getInstance(); c.setTime(date); //inthour=c.get(Calendar.DAY_OF_WEEK); //hour中存的就是星期几了,其范围1~7 //1=星期日7=星期六,其他类推 returnnewSimpleDateFormat("EEEE").format(c.getTime()); } /** *将短时间格式字符串转换为时间yyyy-MM-dd * *@paramstrDate *@return */ publicstaticDatestrToDate(StringstrDate){ SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd"); ParsePositionpos=newParsePosition(0); Datestrtodate=formatter.parse(strDate,pos); returnstrtodate; } /** *两个时间之间的天数 * *@paramdate1 *@paramdate2 *@return */ publicstaticlonggetDays(Stringdate1,Stringdate2){ if(date1==null||date1.equals("")) return0; if(date2==null||date2.equals("")) return0; //转换为标准时间 SimpleDateFormatmyFormatter=newSimpleDateFormat("yyyy-MM-dd"); java.util.Datedate=null; java.util.Datemydate=null; try{ date=myFormatter.parse(date1); mydate=myFormatter.parse(date2); }catch(Exceptione){ } longday=(date.getTime()-mydate.getTime())/(24*60*60*1000); returnday; } //计算当月最后一天,返回字符串 publicStringgetDefaultDay(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.set(Calendar.DATE,1);//设为当前月的1号 lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号 lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 str=sdf.format(lastDate.getTime()); returnstr; } //上月第一天 publicStringgetPreviousMonthFirst(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.set(Calendar.DATE,1);//设为当前月的1号 lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号 //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 str=sdf.format(lastDate.getTime()); returnstr; } //获取当月第一天 publicStringgetFirstDayOfMonth(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.set(Calendar.DATE,1);//设为当前月的1号 str=sdf.format(lastDate.getTime()); returnstr; } //获得本周星期日的日期 publicStringgetCurrentWeekday(){ weeks=0; intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+6); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获取当天时间 publicStringgetNowTime(Stringdateformat){ Datenow=newDate(); SimpleDateFormatdateFormat=newSimpleDateFormat(dateformat);//可以方便地修改日期格式 Stringhehe=dateFormat.format(now); returnhehe; } //获得当前日期与本周日相差的天数 privateintgetMondayPlus(){ Calendarcd=Calendar.getInstance(); //获得今天是一周的第几天,星期日是第一天,星期二是第二天...... intdayOfWeek=cd.get(Calendar.DAY_OF_WEEK)-1;//因为按中国礼拜一作为第一天所以这里减1 if(dayOfWeek==1){ return0; }else{ return1-dayOfWeek; } } //获得本周一的日期 publicStringgetMondayOFWeek(){ weeks=0; intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获得相应周的周六的日期 publicStringgetSaturday(){ intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+7*weeks+6); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获得上周星期日的日期 publicStringgetPreviousWeekSunday(){ weeks=0; weeks--; intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+weeks); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获得上周星期一的日期 publicStringgetPreviousWeekday(){ weeks--; intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+7*weeks); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获得下周星期一的日期 publicStringgetNextMonday(){ weeks++; intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+7); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } //获得下周星期日的日期 publicStringgetNextSunday(){ intmondayPlus=this.getMondayPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,mondayPlus+7+6); Datemonday=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreMonday=df.format(monday); returnpreMonday; } privateintgetMonthPlus(){ Calendarcd=Calendar.getInstance(); intmonthOfNumber=cd.get(Calendar.DAY_OF_MONTH); cd.set(Calendar.DATE,1);//把日期设置为当月第一天 cd.roll(Calendar.DATE,-1);//日期回滚一天,也就是最后一天 MaxDate=cd.get(Calendar.DATE); if(monthOfNumber==1){ return-MaxDate; }else{ return1-monthOfNumber; } } //获得上月最后一天的日期 publicStringgetPreviousMonthEnd(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.add(Calendar.MONTH,-1);//减一个月 lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天 lastDate.roll(Calendar.DATE,-1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime()); returnstr; } //获得下个月第一天的日期 publicStringgetNextMonthFirst(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.add(Calendar.MONTH,1);//减一个月 lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天 str=sdf.format(lastDate.getTime()); returnstr; } //获得下个月最后一天的日期 publicStringgetNextMonthEnd(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.add(Calendar.MONTH,1);//加一个月 lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天 lastDate.roll(Calendar.DATE,-1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime()); returnstr; } //获得明年最后一天的日期 publicStringgetNextYearEnd(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.add(Calendar.YEAR,1);//加一个年 lastDate.set(Calendar.DAY_OF_YEAR,1); lastDate.roll(Calendar.DAY_OF_YEAR,-1); str=sdf.format(lastDate.getTime()); returnstr; } //获得明年第一天的日期 publicStringgetNextYearFirst(){ Stringstr=""; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); CalendarlastDate=Calendar.getInstance(); lastDate.add(Calendar.YEAR,1);//加一个年 lastDate.set(Calendar.DAY_OF_YEAR,1); str=sdf.format(lastDate.getTime()); returnstr; } //获得本年有多少天 privateintgetMaxYear(){ Calendarcd=Calendar.getInstance(); cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天 cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。 intMaxYear=cd.get(Calendar.DAY_OF_YEAR); returnMaxYear; } privateintgetYearPlus(){ Calendarcd=Calendar.getInstance(); intyearOfNumber=cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天 cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天 cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。 intMaxYear=cd.get(Calendar.DAY_OF_YEAR); if(yearOfNumber==1){ return-MaxYear; }else{ return1-yearOfNumber; } } //获得本年第一天的日期 publicStringgetCurrentYearFirst(){ intyearPlus=this.getYearPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,yearPlus); DateyearDay=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreYearDay=df.format(yearDay); returnpreYearDay; } //获得本年最后一天的日期* publicStringgetCurrentYearEnd(){ Datedate=newDate(); SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy");//可以方便地修改日期格式 Stringyears=dateFormat.format(date); returnyears+"-12-31"; } //获得上年第一天的日期* publicStringgetPreviousYearFirst(){ Datedate=newDate(); SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy");//可以方便地修改日期格式 Stringyears=dateFormat.format(date); intyears_value=Integer.parseInt(years); years_value--; returnyears_value+"-1-1"; } //获得上年最后一天的日期 publicStringgetPreviousYearEnd(){ weeks--; intyearPlus=this.getYearPlus(); GregorianCalendarcurrentDate=newGregorianCalendar(); currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks +(MaxYear-1)); DateyearDay=currentDate.getTime(); DateFormatdf=DateFormat.getDateInstance(); StringpreYearDay=df.format(yearDay); returnpreYearDay; } //获得本季度第一天 publicStringgetThisSeasonFirstTime(intmonth){ intarray[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; intseason=1; if(month>=1&&month<=3){ season=1; } if(month>=4&&month<=6){ season=2; } if(month>=7&&month<=9){ season=3; } if(month>=10&&month<=12){ season=4; } intstart_month=array[season-1][0]; intend_month=array[season-1][2]; Datedate=newDate(); SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy");//可以方便地修改日期格式 Stringyears=dateFormat.format(date); intyears_value=Integer.parseInt(years); intstart_days=1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month); intend_days=getLastDayOfMonth(years_value,end_month); StringseasonDate=years_value+"-"+start_month+"-"+start_days; returnseasonDate; } //获得本季度最后一天 publicStringgetThisSeasonFinallyTime(intmonth){ intarray[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; intseason=1; if(month>=1&&month<=3){ season=1; } if(month>=4&&month<=6){ season=2; } if(month>=7&&month<=9){ season=3; } if(month>=10&&month<=12){ season=4; } intstart_month=array[season-1][0]; intend_month=array[season-1][2]; Datedate=newDate(); SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy");//可以方便地修改日期格式 Stringyears=dateFormat.format(date); intyears_value=Integer.parseInt(years); intstart_days=1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month); intend_days=getLastDayOfMonth(years_value,end_month); StringseasonDate=years_value+"-"+end_month+"-"+end_days; returnseasonDate; } /** *获取某年某月的最后一天 * *@paramyear *年 *@parammonth *月 *@return最后一天 */ privateintgetLastDayOfMonth(intyear,intmonth){ if(month==1||month==3||month==5||month==7||month==8 ||month==10||month==12){ return31; } if(month==4||month==6||month==9||month==11){ return30; } if(month==2){ if(isLeapYear(year)){ return29; }else{ return28; } } return0; } /** *是否闰年 * *@paramyear *年 *@return */ publicbooleanisLeapYear(intyear){ return(year%4==0&&year%100!=0)||(year%400==0); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值