zoukankan      html  css  js  c++  java
  • 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.其他待补充,

  • 相关阅读:
    猴子得到一堆桃,当天吃了一半之后,又多吃了1个。以后每天,猴子都吃了剩余的一半桃子之>后,又多吃一个。在第10天,只剩下1个桃子。输出这堆桃最初有多少个。
    打印9 9乘法表
    尝试实现一个管理系统, 名字和电话号分别用两个列表存储 =======通讯录管理系统======= 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出
    求结果
    背景流动
    1
    zuoye
    假期 作业1220
    python1217作业
    pythonzuoye20181212
  • 原文地址:https://www.cnblogs.com/zhengzeze/p/5594591.html
Copyright © 2011-2022 走看看