項目中經常使用獲取日期方法大全

  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 }
相關文章
相關標籤/搜索