Java 日期工具类

jopen 6年前

public class CalendarUtil  {      private static Calendar calendar = null;        /**       * 根据类型抓取时间段       * @param type <dt> <dl>1:最近一个小时</dl> <dl>2:最近一天</dl> <dl>3:最近一周</dl>       * <dl>4:最近一月</dl> <dl>5:最近一季度</dl> <dl>6:最近半年</dl> <dl>7:最近一年</dl>       * <dl>8:昨天</dl><dl>9:上周</dl> <dl>10:上月</dl> <dl>11:上季度</dl> <dl>12:上半年</dl>       * <dl>13:去年</dl> <dt>       * @return       */      public static Date[] getTime(int type)      {          switch (type)          {              case 1:                  return calcThePastHour();              case 2:                  return calcRecentDay();              case 3:                  return calcTheLatestWeek();              case 4:                  return calcRecentMonth();              case 5:                  return calcMostRecentQuarter();              case 6:                  return calcRecentHalfYear();              case 7:                  return null;              case 8:                  return calcYesterday();              case 9:                  return calcLastWeek();              case 10:                  return calcLastMonth();              case 11:                  return calcLastSeason();              case 12:                  return calcFirstHalfYear();              case 13:                  return calcPastYear();              default:                  throw new IllegalArgumentException("type 只能在[1,13]之间");          }      }        /**       * 昨天时间段       */      public static Date[] calcYesterday()      {          calendar = Calendar.getInstance();          calendar.add(Calendar.DATE, -1);          Date from = getMinDate(calendar);          Date to = getMaxDate(calendar);          return new Date[]{from, to};      }        /**       * 国内习惯 上一周时间段       */      public static Date[] calcLastWeek()      {          calendar = Calendar.getInstance();          int minus = calendar.get(Calendar.DAY_OF_WEEK);          calendar.add(Calendar.DATE, -minus + 1);          Date to = getMaxDate(calendar);          calendar.add(Calendar.DATE, -6);          Date from = getMinDate(calendar);          return new Date[]{from, to};      }        /**       * 国外习惯 上一周时间段       */      public static Date[] calcLastWeekF()      {          calendar = Calendar.getInstance();          int minus = calendar.get(Calendar.DAY_OF_WEEK);          calendar.add(Calendar.DATE, -minus);          Date to = getMaxDate(calendar);          calendar.add(Calendar.DATE, -6);          Date from = getMinDate(calendar);          return new Date[]{from, to};      }        /**       * 上个月时间段       */      public static Date[] calcLastMonth()      {          calendar = Calendar.getInstance();          calendar.set(Calendar.DAY_OF_MONTH, 0);          Date to = getMaxDate(calendar);          calendar.set(Calendar.DAY_OF_MONTH, 1);          Date from = getMinDate(calendar);          return new Date[]{from, to};      }        /**       * 上半年时间段       */      public static Date[] calcFirstHalfYear()      {          calendar = Calendar.getInstance();          int year = calendar.get(Calendar.YEAR);          calendar.set(year, 0, 1);          Date from = getMinDate(calendar);          calendar.set(year, 5, 30);          Date to = getMaxDate(calendar);          return new Date[]{from, to};        }        /**       * 下半年时间段       */      public static Date[] calcNextHalfYear()      {          calendar = Calendar.getInstance();          int year = calendar.get(Calendar.YEAR);          calendar.set(year, 6, 1);          Date from = getMinDate(calendar);          calendar.set(year, 11, 31);          Date to = getMaxDate(calendar);          return new Date[]{from, to};      }        /**       * 去年时间段       */      public static Date[] calcPastYear()      {          calendar = Calendar.getInstance();          int pastYear = calendar.get(Calendar.YEAR) - 1;          calendar.set(pastYear, 0, 1);          Date from = getMinDate(calendar);          calendar.set(pastYear, 11, 31);          Date to = getMaxDate(calendar);          return new Date[]{from, to};      }        /**       * 上一季度时间段       */      public static Date[] calcLastSeason()      {          calendar = Calendar.getInstance();          Date[] time = new Date[2];          Calendar c = Calendar.getInstance();          int lastSeason = getSeason(calendar) - 1;          if (lastSeason == 1)          {//第一季度                c.set(Calendar.MONTH, Calendar.JANUARY);              time[0] = getMinMonthDate(c);              c.set(Calendar.MONTH, Calendar.MARCH);              time[1] = getMaxMonthDate(c);          }          else if (lastSeason == 2)          {//第二季度                c.set(Calendar.MONTH, Calendar.APRIL);              time[0] = getMinMonthDate(c);              c.set(Calendar.MONTH, Calendar.JUNE);              time[1] = getMaxMonthDate(c);          }          else if (lastSeason == 3)          {//第三季度                c.set(Calendar.MONTH, Calendar.JULY);              time[0] = getMinMonthDate(c);              c.set(Calendar.MONTH, Calendar.SEPTEMBER);              time[1] = getMaxMonthDate(c);          }          else if (lastSeason == 0)          {//去年的第四季度                c.set(Calendar.MONTH, Calendar.OCTOBER);              time[0] = getMinMonthDate(c);              c.set(Calendar.MONTH, Calendar.DECEMBER);              time[1] = getMaxMonthDate(c);          }          return time;      }        /**       * 最近一小时时间段       */      public static Date[] calcThePastHour()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 最近一天时间段       */      public static Date[] calcRecentDay()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 最近一周时间段       */      public static Date[] calcTheLatestWeek()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.WEEK_OF_MONTH, calendar.get(Calendar.WEEK_OF_MONTH) - 1);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 最近一个月       */      public static Date[] calcRecentMonth()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 最近一个季度       */      public static Date[] calcMostRecentQuarter()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 3);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 最近半年       */      public static Date[] calcRecentHalfYear()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 6);          Date from = calendar.getTime();          return new Date[]{from, to};        }        /**       * 最近一年       */      public static Date[] calcRecentYear()      {          calendar = Calendar.getInstance();          Date to = calendar.getTime();          calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1);          Date from = calendar.getTime();          return new Date[]{from, to};      }        /**       * 抓取季度序列号       * @param calendar       * @return       */      public static int getSeason(Calendar calendar)      {            int season = 0;          int month = calendar.get(Calendar.MONTH);          switch (month)          {              case Calendar.JANUARY:              case Calendar.FEBRUARY:              case Calendar.MARCH:                  season = 1;                  break;              case Calendar.APRIL:              case Calendar.MAY:              case Calendar.JUNE:                  season = 2;                  break;              case Calendar.JULY:              case Calendar.AUGUST:              case Calendar.SEPTEMBER:                  season = 3;                  break;              case Calendar.OCTOBER:              case Calendar.NOVEMBER:              case Calendar.DECEMBER:                  season = 4;                  break;              default:                  break;          }          return season;      }        /**       * 获取当天最小时间       */      public static Date getMinDate(Calendar calendar)      {          calendar.set(Calendar.HOUR_OF_DAY, 0);          calendar.set(Calendar.MINUTE, 0);          calendar.set(Calendar.SECOND, 0);          calendar.set(Calendar.MILLISECOND, 0);          return calendar.getTime();      }        /**       * 获取当天最大时间       */      public static Date getMaxDate(Calendar calendar)      {          calendar.set(Calendar.HOUR_OF_DAY, 23);          calendar.set(Calendar.MINUTE, 59);          calendar.set(Calendar.SECOND, 59);          calendar.set(Calendar.MILLISECOND, 0);          return calendar.getTime();      }        /**       * 获取一个月中第一天       */      public static Date getMinMonthDate(Calendar c)      {          c.set(Calendar.DAY_OF_MONTH, 1);          return getMinDate(c);      }        /**       * 获取一个月的最后一天       */      public static Date getMaxMonthDate(Calendar c)      {          c.add(Calendar.MONTH, 1);          c.set(Calendar.DAY_OF_MONTH, 0);          return getMaxDate(c);      }    }