1 packagecom.honghailt.dataextracter.utils;2
3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.ArrayList;6 importjava.util.Calendar;7 importjava.util.Date;8 importjava.util.List;9
10 public classCalendarUtil {11
12 //下月第一天
13 public staticDate getNextMonth(Date beginTime) {14 Calendar c =Calendar.getInstance();15 c.setTime(beginTime);16 c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);17 c.set(Calendar.DAY_OF_MONTH, 1);18 returnc.getTime();19 }20
21 //当天几号
22 public static intgetMonthOfDate(Date date) {23 Calendar c =Calendar.getInstance();24 c.setTime(date);25 returnc.get(Calendar.DAY_OF_MONTH);26 }27 //当月有多少天
28 public static intgetLastDayOfMonth(Date date) {29 Calendar c =Calendar.getInstance();30 c.setTime(date);31 int month =c.getActualMaximum(Calendar.DATE);32 returnmonth;33 }34
35 //当前月 -1
36 public static intgetMonth(Date date) {37 Calendar c =Calendar.getInstance();38 c.setTime(date);39 int month =c.get(Calendar.MONTH);40 returnmonth;41 }42
43 //当月第一天
44 public staticDate getFirstDayOfMonth(Date beginTime){45 Calendar c =Calendar.getInstance();46 c.setTime(beginTime);47 c.set(Calendar.DAY_OF_MONTH, 1);48 returnc.getTime();49 }50
51 //获得当周第几天 i=0表示星期一
52 public static String getNowWeekBegin(Date date,inti) {53 Calendar cd =Calendar.getInstance();54 cd.setTime(date);55 cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);56 if(i==6){57 cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);58 cd.add(cd.DATE, 1);59 }60 Date monday =cd.getTime();61 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");62 String preMonday =df.format(monday);63 returnpreMonday ;64 }65
66 //获得当周第几天,返回日期形。i=0表示星期一
67 public static Date getNowWeekBeginDate(Date date,inti) {68 Calendar cd =Calendar.getInstance();69 cd.setTime(date);70 cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);71 if(i==6){72 cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);73 cd.add(cd.DATE, 1);74 }75 Date monday =cd.getTime();76 returnmonday ;77 }78 //获得本周日期
79 public static ListgetDaysOfWeek(Date date){80 List days = new ArrayList();81 for (int i = 0; i < 7; i++) {82 days.add(getNowWeekBegin(date,i));83 }84 returndays;85 }86 //获得本周日期
87 public static ListgetDaysOfWeekDate(Date date){88 List days = new ArrayList();89 for (int i = 0; i < 7; i++) {90 days.add(getNowWeekBeginDate(date,i));91 }92 returndays;93 }94
95 /**
96 * 获得当月第几周97 *@paramdate98 *@paramweek99 *@return
100 */
101 public static List getWeeksOfMonth(Date date,intweek){102 int day =7*week+1;103 Calendar c =Calendar.getInstance();104 c.setTime(date);105 c.set(Calendar.DAY_OF_MONTH, day);106 returngetDaysOfWeek(c.getTime());107 }108
109 //本月最后一天
110 public staticDate getDateOfLastDayOfMonth(Date date){111 Calendar c =Calendar.getInstance();112 c.setTime(date);113 c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DATE));114 returnc.getTime();115 }116 //获得本月第几天,0表示第一天
117 public static Date getDayOfMonth(Date date,inti){118 Calendar c =Calendar.getInstance();119 c.setTime(date);120 c.set(Calendar.DAY_OF_MONTH, i+1);121 returnc.getTime();122 }123 //本月共几周
124 public static intgetWeekyofMonth(Date date){125 Date d1 = getFirstDayOfMonth(date);//第一天
126 Date d2 = getDateOfLastDayOfMonth(date);//最后一天
127 Date mon1 =getNowWeekBeginDate(d1,0);//第一天所在周星期一
128 Date mon2 =getNowWeekBeginDate(d2,0);//最后一天所在周星期一
129 return (int) ((mon2.getTime()-mon1.getTime())/3600/24/1000)/7;130 }131 public static ListgetWeekName(){132 List list = new ArrayList();133 list.add("周一");134 list.add("周二");135 list.add("周三");136 list.add("周四");137 list.add("周五");138 list.add("周六");139 list.add("周日");140 returnlist;141
142 }143 /**
144 * 首先获得 定一个时间,就2014-07-14为单周145 * 然后获得传过来日期的星期一与这个时间除以7.146 * 然后结果除以2,如果余数是0,这是单周,否则是双周147 *@paramdate148 *@return
149 */
150 public staticString getDanShuangWeek(Date date){151 Date beginDate =StringToDate("2014-07-14");152 Date nowDate =getNowWeekBeginDate(date,0);153 int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);154 int danshuang=temp%2;155 String str=null;156 if(danshuang==0){157 str="单周";158 }else{159 str="双周";160 }161 returnstr;162 }163
164 public static intgetDanShuangWeekInt(Date date){165 Date beginDate =StringToDate("2014-07-14");166
167 Date nowDate =getNowWeekBeginDate(date,0);168 int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);169 int danshuang=temp%2;170 returndanshuang;171 }172
173 public staticDate StringToDate(String strDate){174 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");175 Date date =null;176 try{177 date =df.parse(strDate);178 } catch(ParseException e) {179 //TODO Auto-generated catch block
180 e.printStackTrace();181 }182 returndate;183 }184
185 public staticDate DateToDate(Date date){186 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");187 String strDate=df.format(date);188 returnStringToDate(strDate);189 }190
191 public static voidmain(String[] args) {192 //System.out.println(getDanShuangWeek(StringToDate("2014-08-02"))); ;193 //System.out.println(getDayOfMonth(new Date(),10));
194 System.out.println(DateToDate(newDate()));195 }196 }