zoukankan      html  css  js  c++  java
  • Java之时间处理(当前年的上一年、上一季度、当月、当季)

    一、当前年的上一年

    核心代码:

    public static String getYearBefore() {
          SimpleDateFormat formats = new SimpleDateFormat("yyyy");
          Calendar c = Calendar.getInstance();
          c.add(Calendar.YEAR, -1);
          Date date = c.getTime();
          return formats.format(date);
     }

    二、上一季度

    核心代码:

    /**
     * 获取上一季度 开始和结束时间
     *
     * @return
     */
    public static DateRange getLastQuarter() {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        setMinTime(startCalendar);
    
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setMaxTime(endCalendar);
    
        return new DateRange(startCalendar.getTime(), endCalendar.getTime());
    }
    
    
    /**
     * 最小时间
     *
     * @param calendar
     */
    private static void setMinTime(Calendar calendar) {
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
    }
    
    /**
     * 最大时间
     *
     * @param calendar
     */
    private static void setMaxTime(Calendar calendar) {
        calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
        calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
        calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
        calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));
    }

    DateRange.java:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class DateRange {
        private Date start;
        private Date end;
    }

    三、当月

    核心代码:

    /**
       * 获取当月(开始时间)
       *
       * @return
       */
      public static String getCurrentMonthStartDate() {
    
          // 获取当前年份、月份、日期
          Calendar cale = null;
          // 获取当月第一天
          SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
          String firstday;
          cale = Calendar.getInstance();
          cale.add(Calendar.MONTH, 0);
          cale.set(Calendar.DAY_OF_MONTH, 1);
          firstday = format.format(cale.getTime());
          return firstday;
      }
    
    
      /**
       * 获取当月(结束时间)
       *
       * @return
       */
      public static String getCurrentMonthEndDate() {
    
          // 获取当前年份、月份、日期
          Calendar cale = null;
          // 获取当月最后一天
          SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
          String lastday;
          cale = Calendar.getInstance();
          cale.add(Calendar.MONTH, 1);
          cale.set(Calendar.DAY_OF_MONTH, 0);
          lastday = format.format(cale.getTime());
          return lastday;
      }

    四、当季

    核心代码:

    /**
        * 获取当季
        *
        * @return
        */
       public static DateRange getThisQuarter() {
           Calendar startCalendar = Calendar.getInstance();
           startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3);
           startCalendar.set(Calendar.DAY_OF_MONTH, 1);
           setMinTime(startCalendar);
    
           Calendar endCalendar = Calendar.getInstance();
           endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2);
           endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
           setMaxTime(endCalendar);
    
           return new DateRange(startCalendar.getTime(), endCalendar.getTime());
       }
  • 相关阅读:
    poj1125传播谣言(弗洛伊德,求最长路)
    poj2253青蛙(可到达路径的单次跳跃最短距离)
    poj1860 兑换货币(bellman ford判断正环)
    poj1062 昂贵的礼物(dijkstra+枚举)
    hdu4081 秦始皇修路(次小生成树)
    梦想,永不停息!
    nofollow标签如何使用
    后台地址报错:Service Unavailable
    DEDECMS批量修改默认文章和列表命名规则的方法
    FreeOnTerminate 的线程在线程管理类的Destroy释放时手工释放的问题
  • 原文地址:https://www.cnblogs.com/youcong/p/14619022.html
Copyright © 2011-2022 走看看