Calendar日期处理类
Calendar日期处理类在JAVA中,除了DATE,Calendar算是最常用的日期处理类了,所在包是java.util.Calendar
初始化Calendar
- Calendar rightNow =Calendar.getInstance();
Calendar提供了三种办法来修改当前实例代表的日期: set(), add(), 和roll(). set()方法简单的设置特定的字段为期望的值. add() 和 roll() 的不同在于它们处理over- and underflows: add() 传递变更到"较小"或"较大"的字段, 而roll()不影响其它字段. 比如, 当给代表12月15号的Calendar实例增加一个月, 当add()使用年会增加, 但使用roll()不会发生任何变化.
下面是转自网络的Callendar工具类:
- import java.text.DateFormat;
- import java.text.ParsePosition;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- publicclassCalendarUtil{
- privateint weeks =0;// 用来全局控制 上一周,本周,下一周的周数变化
- privateintMaxDate;// 一月最大天数
- privateintMaxYear;// 一年最大天数
- publicstaticvoid main(String[] args){
- CalendarUtil tt =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("获取当前月的第几周:"+ 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()));
- }
- publicstaticint getYear(){
- returnCalendar.getInstance().get(Calendar.YEAR);
- }
- publicstaticint getMonth(){
- returnCalendar.getInstance().get(Calendar.MONTH)+1;
- }
- publicstaticint getDayOfYear(){
- returnCalendar.getInstance().get(Calendar.DAY_OF_YEAR);
- }
- publicstaticint getDayOfMonth(){
- returnCalendar.getInstance().get(Calendar.DAY_OF_MONTH);
- }
- publicstaticint getDayOfWeek(){
- returnCalendar.getInstance().get(Calendar.DAY_OF_WEEK);
- }
- publicstaticint getWeekOfMonth(){
- returnCalendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);
- }
- publicstaticDate getTimeYearNext(){
- Calendar.getInstance().add(Calendar.DAY_OF_YEAR,183);
- returnCalendar.getInstance().getTime();
- }
- publicstaticString convertDateToString(Date dateTime){
- SimpleDateFormat df =newSimpleDateFormat("yyyy-MM-dd");
- return df.format(dateTime);
- }
- publicstaticString getTwoDay(String sj1,String sj2){
- SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");
- long day =0;
- try{
- java.util.Date date = myFormatter.parse(sj1);
- java.util.Date mydate = myFormatter.parse(sj2);
- day =(date.getTime()- mydate.getTime())/(24*60*60*1000);
- }catch(Exception e){
- return"";
- }
- return day +"";
- }
- publicstaticString getWeek(String sdate){
- // 再转换为时间
- Date date =CalendarUtil.strToDate(sdate);
- Calendar c =Calendar.getInstance();
- c.setTime(date);
- // int hour=c.get(Calendar.DAY_OF_WEEK);
- // hour中存的就是星期几了,其范围 1~7
- // 1=星期日 7=星期六,其他类推
- returnnewSimpleDateFormat("EEEE").format(c.getTime());
- }
- publicstaticDate strToDate(String strDate){
- SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
- ParsePosition pos =newParsePosition(0);
- Date strtodate = formatter.parse(strDate, pos);
- return strtodate;
- }
- publicstaticlong getDays(String date1,String date2){
- if(date1 ==null|| date1.equals(""))
- return0;
- if(date2 ==null|| date2.equals(""))
- return0;
- // 转换为标准时间
- SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");
- java.util.Date date =null;
- java.util.Date mydate =null;
- try{
- date = myFormatter.parse(date1);
- mydate = myFormatter.parse(date2);
- }catch(Exception e){
- }
- long day =(date.getTime()- mydate.getTime())/(24*60*60*1000);
- return day;
- }
- publicString getDefaultDay(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.set(Calendar.DATE,1);// 设为当前月的1号
- lastDate.add(Calendar.MONTH,1);// 加一个月,变为下月的1号
- lastDate.add(Calendar.DATE,-1);// 减去一天,变为当月最后一天
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getPreviousMonthFirst(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.set(Calendar.DATE,1);// 设为当前月的1号
- lastDate.add(Calendar.MONTH,-1);// 减一个月,变为下月的1号
- // lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getFirstDayOfMonth(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.set(Calendar.DATE,1);// 设为当前月的1号
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getCurrentWeekday(){
- weeks =0;
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus +6);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getNowTime(String dateformat){
- Date now =newDate();
- SimpleDateFormat dateFormat =newSimpleDateFormat(dateformat);// 可以方便地修改日期格式
- String hehe = dateFormat.format(now);
- return hehe;
- }
- privateint getMondayPlus(){
- Calendar cd =Calendar.getInstance();
- // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
- int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;// 因为按中国礼拜一作为第一天所以这里减1
- if(dayOfWeek ==1){
- return0;
- }else{
- return1- dayOfWeek;
- }
- }
- publicString getMondayOFWeek(){
- weeks =0;
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getSaturday(){
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus +7* weeks +6);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getPreviousWeekSunday(){
- weeks =0;
- weeks--;
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getPreviousWeekday(){
- weeks--;
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus +7* weeks);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getNextMonday(){
- weeks++;
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus +7);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- publicString getNextSunday(){
- int mondayPlus =this.getMondayPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, mondayPlus +7+6);
- Date monday = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preMonday = df.format(monday);
- return preMonday;
- }
- privateint getMonthPlus(){
- Calendar cd =Calendar.getInstance();
- int monthOfNumber = 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;
- }
- }
- publicString getPreviousMonthEnd(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.add(Calendar.MONTH,-1);// 减一个月
- lastDate.set(Calendar.DATE,1);// 把日期设置为当月第一天
- lastDate.roll(Calendar.DATE,-1);// 日期回滚一天,也就是本月最后一天
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getNextMonthFirst(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.add(Calendar.MONTH,1);// 减一个月
- lastDate.set(Calendar.DATE,1);// 把日期设置为当月第一天
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getNextMonthEnd(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.add(Calendar.MONTH,1);// 加一个月
- lastDate.set(Calendar.DATE,1);// 把日期设置为当月第一天
- lastDate.roll(Calendar.DATE,-1);// 日期回滚一天,也就是本月最后一天
- str = sdf.format(lastDate.getTime());
- return str;
- }
- publicString getNextYearEnd(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =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());
- return str;
- }
- publicString getNextYearFirst(){
- String str ="";
- SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");
- Calendar lastDate =Calendar.getInstance();
- lastDate.add(Calendar.YEAR,1);// 加一个年
- lastDate.set(Calendar.DAY_OF_YEAR,1);
- str = sdf.format(lastDate.getTime());
- return str;
- }
- privateint getMaxYear(){
- Calendar cd =Calendar.getInstance();
- cd.set(Calendar.DAY_OF_YEAR,1);// 把日期设为当年第一天
- cd.roll(Calendar.DAY_OF_YEAR,-1);// 把日期回滚一天。
- intMaxYear= cd.get(Calendar.DAY_OF_YEAR);
- returnMaxYear;
- }
- privateint getYearPlus(){
- Calendar cd =Calendar.getInstance();
- int yearOfNumber = 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;
- }
- }
- publicString getCurrentYearFirst(){
- int yearPlus =this.getYearPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, yearPlus);
- Date yearDay = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preYearDay = df.format(yearDay);
- return preYearDay;
- }
- // 获得本年最后一天的日期 *
- publicString getCurrentYearEnd(){
- Date date =newDate();
- SimpleDateFormat dateFormat =newSimpleDateFormat("yyyy");// 可以方便地修改日期格式
- String years = dateFormat.format(date);
- return years +"-12-31";
- }
- // 获得上年第一天的日期 *
- publicString getPreviousYearFirst(){
- Date date =newDate();
- SimpleDateFormat dateFormat =newSimpleDateFormat("yyyy");// 可以方便地修改日期格式
- String years = dateFormat.format(date);
- int years_value =Integer.parseInt(years);
- years_value--;
- return years_value +"-1-1";
- }
- // 获得上年最后一天的日期
- publicString getPreviousYearEnd(){
- weeks--;
- int yearPlus =this.getYearPlus();
- GregorianCalendar currentDate =newGregorianCalendar();
- currentDate.add(GregorianCalendar.DATE, yearPlus +MaxYear* weeks
- +(MaxYear-1));
- Date yearDay = currentDate.getTime();
- DateFormat df =DateFormat.getDateInstance();
- String preYearDay = df.format(yearDay);
- return preYearDay;
- }
- publicString getThisSeasonFirstTime(int month){
- int array[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
- int season =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;
- }
- int start_month = array[season -1][0];
- int end_month = array[season -1][2];
- Date date =newDate();
- SimpleDateFormat dateFormat =newSimpleDateFormat("yyyy");// 可以方便地修改日期格式
- String years = dateFormat.format(date);
- int years_value =Integer.parseInt(years);
- int start_days =1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
- int end_days = getLastDayOfMonth(years_value, end_month);
- String seasonDate = years_value +"-"+ start_month +"-"+ start_days;
- return seasonDate;
- }
- publicString getThisSeasonFinallyTime(int month){
- int array[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
- int season =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;
- }
- int start_month = array[season -1][0];
- int end_month = array[season -1][2];
- Date date =newDate();
- SimpleDateFormat dateFormat =newSimpleDateFormat("yyyy");// 可以方便地修改日期格式
- String years = dateFormat.format(date);
- int years_value =Integer.parseInt(years);
- int start_days =1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
- int end_days = getLastDayOfMonth(years_value, end_month);
- String seasonDate = years_value +"-"+ end_month +"-"+ end_days;
- return seasonDate;
- }
- privateint getLastDayOfMonth(int year,int month){
- 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;
- }
- publicboolean isLeapYear(int year){
- return(year %4==0&& year %100!=0)||(year %400==0);
- }
- publicboolean isLeapYear2(int year){
- returnnewGregorianCalendar().isLeapYear(year);
- }
- }
夕阳不说话,却温暖了整个晚霞~