`
jinvasshole
  • 浏览: 769837 次
文章分类
社区版块
存档分类
最新评论

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);
  • }
  • }
  • 分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics