项目中常用获取日期方法大全

  1 import java.text.DateFormat;
  2 import java.text.ParsePosition;
  3 import java.text.SimpleDateFormat;
  4 import java.util.Calendar;
  5 import java.util.Date;
  6 import java.util.GregorianCalendar;
  7 
  8 
  9 /**
 10  * @author George E-mail:lendun@163.com
 11  * @version 创建时间:2013-5-31 上午10:45:30
 12  * 
 13  */
 14 public class CalendarUtils {
 15     // 用来全局控制 上一周,本周,下一周的周数变化
 16     private int weeks = 0;
 17     private int MaxDate;// 一月最大天数
 18     private int MaxYear;// 一年最大天数
 19     private static Calendar calendar = Calendar.getInstance();// 实例化日历
 20 
 21     /**
 22      * 测试的
 23      * 
 24      * @param args
 25      */
 26     @SuppressWarnings("static-access")
 27     public static void main(String[] args) {
 28 
 29         CalendarUtils tt = new CalendarUtils();
 30 
 31         System.out.println("获取当天日期:" + tt.getNowTime("yyyy-MM-dd"));
 32         System.out.println("获取本周一日期:" + tt.getMondayOFWeek());
 33         System.out.println("获取本周日的日期~:" + tt.getCurrentWeekday());
 34         System.out.println("获取上周一日期:" + tt.getPreviousWeekday());
 35         System.out.println("获取上周日日期:" + tt.getPreviousWeekSunday());
 36         System.out.println("获取下周一日期:" + tt.getNextMonday());
 37         System.out.println("获取下周日日期:" + tt.getNextSunday());
 38         System.out.println("获得相应周的周六的日期:" + tt.getNowTime("yyyy-MM-dd"));
 39         System.out.println("获取本月最后一天日期:" + tt.getDefaultDay());
 40         System.out.println("获取上月第一天日期:" + tt.getPreviousMonthFirst());
 41         System.out.println("获取上月最后一天的日期:" + tt.getPreviousMonthEnd());
 42         System.out.println("获取下月第一天日期:" + tt.getNextMonthFirst());
 43         System.out.println("获取下月最后一天日期:" + tt.getNextMonthEnd());
 44         System.out.println("获取本年的第一天日期:" + tt.getCurrentYearFirst());
 45         System.out.println("获取本年最后一天日期:" + tt.getCurrentYearEnd());
 46         System.out.println("获取去年的第一天日期:" + tt.getPreviousYearFirst());
 47         System.out.println("获取去年的最后一天日期:" + tt.getPreviousYearEnd());
 48         System.out.println("获取明年第一天日期:" + tt.getNextYearFirst());
 49         System.out.println("获取明年最后一天日期:" + tt.getNextYearEnd());
 50         System.out.println("获取本季度第一天:" + tt.getThisSeasonFirstTime(11));
 51         System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));
 52         System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"
 53                 + CalendarUtils.getTwoDay("2008-12-1", "2008-9-29"));
 54         System.out.println("---------------->");
 55         System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());
 56         System.out.println("获取当前年份:" + tt.getYear());
 57         System.out.println("获取当前月份:" + tt.getMonth());
 58         System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());
 59 
 60         System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());
 61         System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());
 62         System.out.println("获得半年后的日期:"
 63                 + tt.convertDateToString(tt.getTimeYearNext()));
 64     }
 65 
 66     /**
 67      * 获得当前年份
 68      * 
 69      * @return
 70      */
 71     public static int getYear() {
 72         return calendar.get(Calendar.YEAR);
 73     }
 74 
 75     /**
 76      * 获得当前月份
 77      * 
 78      * @return
 79      */
 80     public static int getMonth() {
 81         return calendar.get(Calendar.MONTH) + 1;
 82     }
 83 
 84     /**
 85      * 获得今天在本年的第几天
 86      * 
 87      * @return
 88      */
 89     public static int getDayOfYear() {
 90         return calendar.get(Calendar.DAY_OF_YEAR);
 91     }
 92 
 93     /**
 94      * 获得今天在本月的第几天(获得当前日)
 95      * 
 96      * @return
 97      */
 98     public static int getDayOfMonth() {
 99         return calendar.get(Calendar.DAY_OF_MONTH);
100     }
101 
102     /**
103      * 获得今天在本周的第几天
104      * 
105      * @return
106      */
107     public static int getDayOfWeek() {
108         return calendar.get(Calendar.DAY_OF_WEEK);
109     }
110 
111     /**
112      * 获得今天是这个月的第几周
113      * 
114      * @return
115      */
116     public static int getWeekOfMonth() {
117         return calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
118     }
119     
120     /** 获得当前时间的"YYYY-MM"字串  **/
121     public static String getYYYYMM(Calendar cal ) {
122         StringBuffer sb = new StringBuffer();
123         sb.append(cal.get(Calendar.YEAR));
124         sb.append("-");
125         sb.append((cal.get(Calendar.MONTH)+1));
126         return sb.toString();
127     }    
128     
129     /** 获得当前时间的"YYYY-MM-DD"字串 **/
130     public static String getYYYYMMDD(Calendar cal) {
131         StringBuffer sb = new StringBuffer();
132         sb.append(cal.get(Calendar.YEAR));
133         sb.append("-");
134         sb.append((cal.get(Calendar.MONTH)+1));
135         sb.append("-");
136         sb.append(cal.get(Calendar.DAY_OF_MONTH));
137         return sb.toString();
138     }    
139     
140     /** 某日0时0分0秒的时间 **/
141     public static Calendar getFistTimeOfDay(Calendar cal){
142         Calendar calendar = Calendar.getInstance();
143         String coordinateDate = CalendarUtils.getYYYYMMDD(cal)+" 00:00:00";    
144         calendar.setTime(DateUtils.string2Date(coordinateDate));
145         return calendar;
146     }
147     
148     /** 某日23点59分59秒的时间 **/
149     public static Calendar getLastTimeOfDay(Calendar cal){
150         Calendar calendar = Calendar.getInstance();
151         String coordinateDate = CalendarUtils.getYYYYMMDD(cal)+" 23:59:59;    
152         calendar.setTime(DateUtils.string2Date(coordinateDate));
153         return calendar;
154     }    
155     
156     /** 获取某月第一天0时0分0秒的时间  **/
157     public Calendar getFirstDayOfMonth(Calendar cal) {
158 
159         Calendar calendar = Calendar.getInstance();
160         String coordinateDate = CalendarUtils.getYYYYMMDD(cal)+" 00:00:00";    
161         calendar.setTime(DateUtils.string2Date(coordinateDate));
162         calendar.set(Calendar.DATE, 1);                            // 设为当前月的1号
163         return calendar;
164     }
165     
166     /**
167      * 获得半年后的日期
168      * 
169      * @return
170      */
171     public static Date getTimeYearNext() {
172         calendar.add(Calendar.DAY_OF_YEAR, 183);
173         return calendar.getTime();
174     }
175 
176     public static String convertDateToString(Date dateTime) {
177         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
178         return df.format(dateTime);
179     }
180 
181     /**
182      * 得到二个日期间的间隔天数
183      */
184     public static String getTwoDay(String sj1, String sj2) {
185         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
186         long day = 0;
187         try {
188             java.util.Date date = myFormatter.parse(sj1);
189             java.util.Date mydate = myFormatter.parse(sj2);
190             day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
191         } catch (Exception e) {
192             return "";
193         }
194         return day + "";
195     }
196 
197     /**
198      * 根据一个日期,返回是星期几的字符串
199      * 
200      * @param sdate
201      * @return
202      */
203     public static String getWeek(String sdate) {
204         // 再转换为时间
205         Date date = CalendarUtils.strToDate(sdate);
206         Calendar c = Calendar.getInstance();
207         c.setTime(date);
208         // int hour=c.get(Calendar.DAY_OF_WEEK);
209         // hour中存的就是星期几了,其范围 1~7
210         // 1=星期日 7=星期六,其他类推
211         return new SimpleDateFormat("EEEE").format(c.getTime());
212     }
213 
214     /**
215      * 将短时间格式字符串转换为时间 yyyy-MM-dd
216      * 
217      * @param strDate
218      * @return
219      */
220     public static Date strToDate(String strDate) {
221         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
222         ParsePosition pos = new ParsePosition(0);
223         Date strtodate = formatter.parse(strDate, pos);
224         return strtodate;
225     }
226 
227     /**
228      * 两个时间之间的天数
229      * 
230      * @param date1
231      * @param date2
232      * @return
233      */
234     public static long getDays(String date1, String date2) {
235         if (date1 == null || date1.equals(""))
236             return 0;
237         if (date2 == null || date2.equals(""))
238             return 0;
239         // 转换为标准时间
240         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
241         java.util.Date date = null;
242         java.util.Date mydate = null;
243         try {
244             date = myFormatter.parse(date1);
245             mydate = myFormatter.parse(date2);
246         } catch (Exception e) {
247         }
248         long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
249         return day;
250     }
251 
252     // 计算当月最后一天,返回字符串
253     public String getDefaultDay() {
254         String str = "";
255         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
256 
257         Calendar lastDate = Calendar.getInstance();
258         lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
259         lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
260         lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
261 
262         str = sdf.format(lastDate.getTime());
263         return str;
264     }
265 
266     // 上月第一天
267     public String getPreviousMonthFirst() {
268         String str = "";
269         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
270 
271         Calendar lastDate = Calendar.getInstance();
272         lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
273         lastDate.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号
274         // lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
275 
276         str = sdf.format(lastDate.getTime());
277         return str;
278     }
279 
280 
281 
282     // 获得本周星期日的日期
283     public String getCurrentWeekday() {
284         weeks = 0;
285         int mondayPlus = this.getMondayPlus();
286         GregorianCalendar currentDate = new GregorianCalendar();
287         currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
288         Date monday = currentDate.getTime();
289 
290         DateFormat df = DateFormat.getDateInstance();
291         String preMonday = df.format(monday);
292         return preMonday;
293     }
294 
295     // 获取当天时间
296     public String getNowTime(String dateformat) {
297         Date now = new Date();
298         SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
299         String hehe = dateFormat.format(now);
300         return hehe;
301     }
302 
303     // 获得当前日期与本周日相差的天数
304     private int getMondayPlus() {
305         Calendar cd = Calendar.getInstance();
306         // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
307         int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
308         if (dayOfWeek == 1) {
309             return 0;
310         } else {
311             return 1 - dayOfWeek;
312         }
313     }
314 
315     // 获得本周一的日期
316     public String getMondayOFWeek() {
317         weeks = 0;
318         int mondayPlus = this.getMondayPlus();
319         GregorianCalendar currentDate = new GregorianCalendar();
320         currentDate.add(GregorianCalendar.DATE, mondayPlus);
321         Date monday = currentDate.getTime();
322 
323         DateFormat df = DateFormat.getDateInstance();
324         String preMonday = df.format(monday);
325         return preMonday;
326     }
327 
328     // 获得相应周的周六的日期
329     public String getSaturday() {
330         int mondayPlus = this.getMondayPlus();
331         GregorianCalendar currentDate = new GregorianCalendar();
332         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
333         Date monday = currentDate.getTime();
334         DateFormat df = DateFormat.getDateInstance();
335         String preMonday = df.format(monday);
336         return preMonday;
337     }
338 
339     // 获得上周星期日的日期
340     public String getPreviousWeekSunday() {
341         weeks = 0;
342         weeks--;
343         int mondayPlus = this.getMondayPlus();
344         GregorianCalendar currentDate = new GregorianCalendar();
345         currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
346         Date monday = currentDate.getTime();
347         DateFormat df = DateFormat.getDateInstance();
348         String preMonday = df.format(monday);
349         return preMonday;
350     }
351 
352     // 获得上周星期一的日期
353     public String getPreviousWeekday() {
354         weeks--;
355         int mondayPlus = this.getMondayPlus();
356         GregorianCalendar currentDate = new GregorianCalendar();
357         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
358         Date monday = currentDate.getTime();
359         DateFormat df = DateFormat.getDateInstance();
360         String preMonday = df.format(monday);
361         return preMonday;
362     }
363 
364     // 获得下周星期一的日期
365     public String getNextMonday() {
366         weeks++;
367         int mondayPlus = this.getMondayPlus();
368         GregorianCalendar currentDate = new GregorianCalendar();
369         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
370         Date monday = currentDate.getTime();
371         DateFormat df = DateFormat.getDateInstance();
372         String preMonday = df.format(monday);
373         return preMonday;
374     }
375 
376     // 获得下周星期日的日期
377     public String getNextSunday() {
378 
379         int mondayPlus = this.getMondayPlus();
380         GregorianCalendar currentDate = new GregorianCalendar();
381         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
382         Date monday = currentDate.getTime();
383         DateFormat df = DateFormat.getDateInstance();
384         String preMonday = df.format(monday);
385         return preMonday;
386     }
387 
388     public int getMonthPlus() {
389         Calendar cd = Calendar.getInstance();
390         int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);
391         cd.set(Calendar.DATE, 1);// 把日期设置为当月第一天
392         cd.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
393         MaxDate = cd.get(Calendar.DATE);
394         if (monthOfNumber == 1) {
395             return -MaxDate;
396         } else {
397             return 1 - monthOfNumber;
398         }
399     }
400 
401     // 获得上月最后一天的日期
402     public String getPreviousMonthEnd() {
403         String str = "";
404         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
405 
406         Calendar lastDate = Calendar.getInstance();
407         lastDate.add(Calendar.MONTH, -1);// 减一个月
408         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
409         lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
410         str = sdf.format(lastDate.getTime());
411         return str;
412     }
413 
414     // 获得下个月第一天的日期
415     public String getNextMonthFirst() {
416         String str = "";
417         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
418 
419         Calendar lastDate = Calendar.getInstance();
420         lastDate.add(Calendar.MONTH, 1);// 减一个月
421         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
422         str = sdf.format(lastDate.getTime());
423         return str;
424     }
425 
426     // 获得下个月最后一天的日期
427     public String getNextMonthEnd() {
428         String str = "";
429         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
430 
431         Calendar lastDate = Calendar.getInstance();
432         lastDate.add(Calendar.MONTH, 1);// 加一个月
433         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
434         lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
435         str = sdf.format(lastDate.getTime());
436         return str;
437     }
438 
439     // 获得明年最后一天的日期
440     public String getNextYearEnd() {
441         String str = "";
442         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
443 
444         Calendar lastDate = Calendar.getInstance();
445         lastDate.add(Calendar.YEAR, 1);// 加一个年
446         lastDate.set(Calendar.DAY_OF_YEAR, 1);
447         lastDate.roll(Calendar.DAY_OF_YEAR, -1);
448         str = sdf.format(lastDate.getTime());
449         return str;
450     }
451 
452     // 获得明年第一天的日期
453     public String getNextYearFirst() {
454         String str = "";
455         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
456 
457         Calendar lastDate = Calendar.getInstance();
458         lastDate.add(Calendar.YEAR, 1);// 加一个年
459         lastDate.set(Calendar.DAY_OF_YEAR, 1);
460         str = sdf.format(lastDate.getTime());
461         return str;
462 
463     }
464 
465     // 获得本年有多少天
466     public int getMaxYear() {
467         Calendar cd = Calendar.getInstance();
468         cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
469         cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
470         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
471         return MaxYear;
472     }
473 
474     private int getYearPlus() {
475         Calendar cd = Calendar.getInstance();
476         int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天
477         cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
478         cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
479         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
480         if (yearOfNumber == 1) {
481             return -MaxYear;
482         } else {
483             return 1 - yearOfNumber;
484         }
485     }
486 
487     // 获得本年第一天的日期
488     public String getCurrentYearFirst() {
489         int yearPlus = this.getYearPlus();
490         GregorianCalendar currentDate = new GregorianCalendar();
491         currentDate.add(GregorianCalendar.DATE, yearPlus);
492         Date yearDay = currentDate.getTime();
493         DateFormat df = DateFormat.getDateInstance();
494         String preYearDay = df.format(yearDay);
495         return preYearDay;
496     }
497 
498     // 获得本年最后一天的日期 *
499     public String getCurrentYearEnd() {
500         Date date = new Date();
501         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
502         String years = dateFormat.format(date);
503         return years + "-12-31";
504     }
505 
506     // 获得上年第一天的日期 *
507     public String getPreviousYearFirst() {
508         Date date = new Date();
509         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
510         String years = dateFormat.format(date);
511         int years_value = Integer.parseInt(years);
512         years_value--;
513         return years_value + "-1-1";
514     }
515 
516     // 获得上年最后一天的日期
517     public String getPreviousYearEnd() {
518         weeks--;
519         int yearPlus = this.getYearPlus();
520         GregorianCalendar currentDate = new GregorianCalendar();
521         currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks
522                 + (MaxYear - 1));
523         Date yearDay = currentDate.getTime();
524         DateFormat df = DateFormat.getDateInstance();
525         String preYearDay = df.format(yearDay);
526         return preYearDay;
527     }
528 
529     // 获得本季度第一天
530     public String getThisSeasonFirstTime(int month) {
531         int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
532         int season = 1;
533         if (month >= 1 && month <= 3) {
534             season = 1;
535         }
536         if (month >= 4 && month <= 6) {
537             season = 2;
538         }
539         if (month >= 7 && month <= 9) {
540             season = 3;
541         }
542         if (month >= 10 && month <= 12) {
543             season = 4;
544         }
545         int start_month = array[season - 1][0];
546 //        int end_month = array[season - 1][2];
547 
548         Date date = new Date();
549         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
550         String years = dateFormat.format(date);
551         int years_value = Integer.parseInt(years);
552 
553         int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
554 //        int end_days = getLastDayOfMonth(years_value, end_month);
555         String seasonDate = years_value + "-" + start_month + "-" + start_days;
556         return seasonDate;
557 
558     }
559 
560     // 获得本季度最后一天
561     public String getThisSeasonFinallyTime(int month) {
562         int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
563         int season = 1;
564         if (month >= 1 && month <= 3) {
565             season = 1;
566         }
567         if (month >= 4 && month <= 6) {
568             season = 2;
569         }
570         if (month >= 7 && month <= 9) {
571             season = 3;
572         }
573         if (month >= 10 && month <= 12) {
574             season = 4;
575         }
576 //        int start_month = array[season - 1][0];
577         int end_month = array[season - 1][2];
578 
579         Date date = new Date();
580         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
581         String years = dateFormat.format(date);
582         int years_value = Integer.parseInt(years);
583 
584 //        int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
585         int end_days = getLastDayOfMonth(years_value, end_month);
586         String seasonDate = years_value + "-" + end_month + "-" + end_days;
587         return seasonDate;
588 
589     }
590 
591     /**
592      * 获取某年某月的最后一天
593      * 
594      * @param year
595      *            年
596      * @param month
597      *            月
598      * @return 最后一天
599      */
600     private int getLastDayOfMonth(int year, int month) {
601         if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
602                 || month == 10 || month == 12) {
603             return 31;
604         }
605         if (month == 4 || month == 6 || month == 9 || month == 11) {
606             return 30;
607         }
608 /*        if (month == 2) {
609             if (isLeapYear(year)) {
610                 return 29;
611             } else {
612                 return 28;
613             }
614         }*/
615         return 0;
616     }
617 
618     /***
619      * 
620      *获取所在月的第一天日期
621      * */
622     public static String getFirstDayOfMonth(String date) {
623 
624         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
625 
626         try {
627 
628             calendar.setTime(sdf.parse(date));
629             calendar.set(Calendar.DATE, 1);
630 
631         } catch (Exception e) {
632 
633             e.printStackTrace();
634         }
635 
636         return sdf.format(calendar.getTime());
637     }
638 
639     /***
640      * 获取所在月的最后一天时间
641      * 
642      * */
643     public static String getLastDayOfMonth(String date) {
644 
645         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
646 
647         try {
648 
649             calendar.setTime(sdf.parse(date));
650             calendar.set(Calendar.DATE, 1);// 设为当前月的1号
651             calendar.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
652             calendar.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
653 
654         } catch (Exception e) {
655 
656             e.printStackTrace();
657         }
658 
659         return sdf.format(calendar.getTime());
660     }
661 
662     /***
663      * 
664      * 上月第一天
665      * 
666      * */
667     public static String getPreviousMonthFirst(String date) {
668 
669         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
670 
671         try {
672 
673             calendar.setTime(sdf.parse(date));
674             calendar.set(Calendar.DATE, 1);// 设为当前月的1号
675             calendar.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号
676 
677         } catch (Exception e) {
678 
679             e.printStackTrace();
680         }
681 
682         return sdf.format(calendar.getTime());
683     }
684 
685     /***
686      * 
687      * 上月最后一天
688      * 
689      * */
690     public static String getPreviousMonthEnd(String date) {
691 
692         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
693 
694         try {
695 
696             calendar.setTime(sdf.parse(date));
697             calendar.add(Calendar.MONTH, -1);// 减一个月
698             calendar.set(Calendar.DATE, 1);// 把日期设置为当月第一天
699             calendar.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
700 
701         } catch (Exception e) {
702 
703             e.printStackTrace();
704         }
705 
706         return sdf.format(calendar.getTime());
707     }
708 
709     /***
710      * 获取所在年的第一天
711      * 
712      * **/
713     public static String getFirstDayOfYear(String date) {
714 
715         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
716 
717         try {
718 
719             calendar.setTime(sdf.parse(date));
720             calendar.set(Calendar.DAY_OF_YEAR, 1);
721 
722         } catch (Exception e) {
723 
724             e.printStackTrace();
725         }
726 
727         return sdf.format(calendar.getTime());
728     }
729 
730     /**
731      * 
732      * 当前时间去年的日期
733      * */
734     public static String getDayOfLastYear(String date) {
735 
736         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
737 
738         try {
739 
740             calendar.setTime(sdf.parse(date));
741             calendar.add(Calendar.YEAR, -1);
742 
743         } catch (Exception e) {
744 
745             e.printStackTrace();
746         }
747 
748         return sdf.format(calendar.getTime());
749     }
750 
751     /****
752      * 
753      * 系统当前时间
754      * */
755     public static String getCurrentDate() {
756 
757         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
758 
759         return sdf.format(calendar.getTime());
760     }
761 
762     /**
763      * 得到几天前的时间
764      * 
765      * @param d
766      * @param day
767      * @return
768      */
769     public static Date getDateBefore(Date d, int day) {
770         Calendar now = Calendar.getInstance();
771         now.setTime(d);
772         now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
773         return now.getTime();
774     }
775 
776     /**
777      * 得到几天后的时间
778      * 
779      * @param d
780      * @param day
781      * @return
782      */
783     public static Date getDateAfter(Date d, int day) {
784         Calendar now = Calendar.getInstance();
785         now.setTime(d);
786         now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
787         return now.getTime();
788     }
789 
790     /****
791      * 
792      * 
793      * 计算月份差
794      * 
795      * **/
796     public static int getMonthSpace(String firstTime, String lastTime) {
797 
798         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
799 
800         Calendar c1 = Calendar.getInstance();
801         Calendar c2 = Calendar.getInstance();
802         try {
803             c1.setTime(sdf.parse(lastTime));
804             c2.setTime(sdf.parse(firstTime));
805         } catch (Exception e) {
806             e.printStackTrace();
807         }
808 
809         int result = (c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR)) * 12
810                 + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH));
811 
812         return result == 0 ? 1 : result;
813     }
814 }

 

posted @ 2015-06-04 14:11  何秋雨  阅读(335)  评论(0编辑  收藏  举报