java:calendar类及一些比较实用的utils(二)

在这里将我在项目中用到的一些关于使用Calendar的utils分享出来,只是一部分,后期遇到好的通用方法会继续添加,以和大家交流学习,如果你还不熟悉这个类的使用,但是急需某个util,可以加群:413066190 (Java&xiaowei,Let's go! )互相帮助!

1.

 1 /**
 2      * 查询一段时间内的所有的日期
 3      * @param dBegin
 4      * @param dEnd
 5      * @return 
 6      */
 7      public static List<Date> findDates(Date dBegin, Date dEnd) {  
 8         List dateList = new ArrayList();  
 9         dateList.add(dBegin);  
10         Calendar calBegin = Calendar.getInstance();  
11         // 使用给定的 Date 设置此 Calendar 的时间    
12         calBegin.setTime(dBegin);  
13         Calendar calEnd = Calendar.getInstance();  
14         // 使用给定的 Date 设置此 Calendar 的时间    
15         calEnd.setTime(dEnd);  
16         // 测试此日期是否在指定日期之后    
17         while (dEnd.after(calBegin.getTime())) {  
18             // 根据日历的规则,为给定的日历字段添加或减去指定的时间量    
19             calBegin.add(Calendar.DAY_OF_MONTH, 1);  
20             dateList.add(calBegin.getTime());  
21         }  
22         return dateList;  
23     }  

2.

 1  /**
 2      * 获得最近的12个月的月份(包含当前月份)
 3      * @return 
 4      */
 5     public static String[] getLast12Months(){  
 6         String[] last12Months = new String[12];       
 7         Calendar cal = Calendar.getInstance();        
 8         cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
 9         for(int i=0; i<12; i++){  
10             cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月    
11             last12Months[11-i] = cal.get(Calendar.YEAR)+ "-" + (cal.get(Calendar.MONTH)+1); 
12         }  
13           
14         return last12Months; //返回数组形式的 
15     }

3.

 1 /**
 2      * 获取指定月份的第一天和最后一天
 3      * @param str
 4      * @return
 5      */
 6     public static Map<String, String> getFirstday_Lastday_Month(String st) throws Exception {
 7         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 8         SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM");
 9         Calendar calendar = Calendar.getInstance();
10         Date d = df1.parse(st);
11         calendar.setTime(d);
12         Date theDate = calendar.getTime();
13         
14         //月第一天
15         GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
16         gcLast.setTime(theDate);
17         gcLast.set(Calendar.DAY_OF_MONTH, 1);
18         String day_first = df.format(gcLast.getTime());
19         StringBuffer str = new StringBuffer().append(day_first);
20         day_first = str.toString();
21 
22         //月最后一天
23         calendar.add(Calendar.MONTH, 1);    //加一个月
24         calendar.set(Calendar.DATE, 1);        
25         calendar.add(Calendar.DATE, -1);    
26         String day_last = df.format(calendar.getTime());
27         StringBuffer endStr = new StringBuffer().append(day_last);
28         day_last = endStr.toString();
29 
30         Map<String, String> map = new HashMap<String, String>();
31         map.put("first", day_first);
32         map.put("last", day_last);
33         return map;
34         /*
35          * 此处返回map形式,使用方式,如下:
36          *  Map<String, String> map = getFirstday_Lastday_Month(str);
37          *  map.get("first")  //第一天
38          *  map.get("last")  //最后一天
39          */
40     }

4.

 1 /**
 2      * 根据指定日期获取前一天的日期
 3      *
 4      * @param today
 5      * @return
 6      */
 7     public static String getYesterdayByToday(String day) {
 8         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 9         Date date = null;
10         try {
11             if (day != null && !"".equals(day)) {
12                 date = sdf.parse(day);
13             } else {
14                 date = sdf.parse(sdf.format(new Date()));
15             }
16             Calendar cal = Calendar.getInstance();
17             cal.setTime(date);
18             cal.add(Calendar.DATE, -1);
19             String yesterday = sdf.format(cal.getTime());
20             return yesterday;
21         } catch (ParseException e) {
22             e.printStackTrace();
23             return "";
24         }
25     }

5.

 1 /**
 2      * 获取当前时间最近24小时的时间
 3      *
 4      * @return
 5      */
 6     public static String[] getDateHour(String dateStr) {
 7         String[] strs = new String[24];
 8         try {
 9             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
10 
11             Date date = null;
12             if (dateStr != null && !"".equals(dateStr)) {
13                 date = sdf.parse(dateStr);
14             } else {
15                 date = sdf.parse(sdf.format(new Date()));
16             }
17 
18             Calendar cd = Calendar.getInstance();
19             cd.setTime(date); //当前日期
20             // cd.add(Calendar.HOUR_OF_DAY, 1); 
21             for (int i = 0; i < 24; i++) {
22                 cd.add(Calendar.HOUR_OF_DAY, -1);
23                 strs[i] = sdf.format(cd.getTime());
24             }
25         } catch (ParseException e) {
26             e.printStackTrace();
27         }
28 
29         return strs;
30     }

6.

 1  /**
 2      * 获取传入时间的前一天时间
 3      *
 4      * @param day
 5      * @return
 6      */
 7     public static String getYesterdayHour(String day) {
 8         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 9         Date date = null;
10         try {
11             if (day != null && !"".equals(day)) {
12                 date = sdf.parse(day);
13             } else {
14                 date = sdf.parse(sdf.format(new Date()));
15             }
16             Calendar cal = Calendar.getInstance();
17             cal.setTime(date);
18             cal.add(Calendar.DATE, -1);
19             String yesterday = sdf.format(cal.getTime());
20             return yesterday;
21         } catch (ParseException e) {
22             e.printStackTrace();
23             return "";
24         }
25 
26     }

7.

 1 /**
 2      * 将(1/26/15 11:59 PM)型时间格式转换
 3      *
 4      * @param dateStr
 5      * @return
 6      */
 7     public static String parseDateFromCsv(String dateStr) {
 8         String dateString = null;
 9         try {
10             SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
11             SimpleDateFormat sdf2 = new SimpleDateFormat("M/dd/yy hh:mm a", Locale.US);
12 
13             Date date = sdf2.parse(dateStr);
14             dateString = sdf1.format(date);
15 
16         } catch (Exception e) {
17             e.printStackTrace();
18         }
19         return dateString;
20     }

8.

 1  /**
 2      * 获取当前时间,测试发现jdk直接获取时间可能会存在时差,需要通过代码来设置时区
 3      *
 4      * @return
 5      */
 6     public static String getCurrTime() {
 7         TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
 8         TimeZone.setDefault(tz);
 9         return new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
10     }

9.其他待补充,

 

posted @ 2016-06-17 17:04  正则吃饺子  阅读(505)  评论(0编辑  收藏  举报