日历工具类

  //查找一段时间内的工作日
  public static List<String> findWorkDate(String beginDate, String endDate)
  {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    List lDate = findAllDates(beginDate, endDate);
    List result = new ArrayList();
    for (Iterator iterator = lDate.iterator(); iterator.hasNext(); )
    {
      String sdate = (String)iterator.next();
      if (!isWeekend(sdate, sdf))
      {
        result.add(sdate);
      }
    }
    return result;
  }


  //查找一段时间内的所有日期
  public static List<String> findAllDates(String beginDate, String endDate)
  {
    List lDate = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Date dBegin = sdf.parse(beginDate);
      Date dEnd = sdf.parse(endDate);

      lDate = new ArrayList();
      SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
      lDate.add(sd.format(dBegin));
      Calendar calBegin = Calendar.getInstance();

      calBegin.setTime(dBegin);
      Calendar calEnd = Calendar.getInstance();

      calEnd.setTime(dEnd);

      while (dEnd.after(calBegin.getTime()))
      {
        calBegin.add(5, 1);
        lDate.add(sd.format(calBegin.getTime()));
      }
    } catch (ParseException e) {
      e.printStackTrace();
    }

    return lDate;
  }

 //查找从现在开始第几周周末的日期
  public static String getNexWeekEndDay(SimpleDateFormat sdf, int i)
  {
    Calendar calendar1 = Calendar.getInstance();

    calendar1.setFirstDayOfWeek(2);

    int dayOfWeek = calendar1.get(7);
    if (1 == dayOfWeek) {
      calendar1.add(5, -1);
    }

    int day = calendar1.get(7);

    calendar1.add(5, 7 * i);
    calendar1.add(5, calendar1.getFirstDayOfWeek() - day);
    calendar1.add(5, 6);
    String endDate = sdf.format(calendar1.getTime());
    return endDate;
  }

  //查找从现在开始第几周周一的日期
  public static String getLastWeekBeginDay(SimpleDateFormat sdf, int n)
  {
    String beginDate = getFromToDate(sdf, new Date(), n, 0, 0);
    return beginDate;
  }

  public static String getFromToDate(SimpleDateFormat sdf, Date date, int n, int option, int k)
  {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int dayOfWeek = calendar.get(7) - 1;
    int offset = option == 0 ? 1 - dayOfWeek : 7 - dayOfWeek;
    int amount = option == 0 ? offset - (n - 1 + k) * 7 : offset - k * 7;
    calendar.add(5, amount);
    return sdf.format(calendar.getTime());
  }

  //查找时间段
  public static String getNWeekTimeInterval(int n, SimpleDateFormat sdf)
  {
    String beginDate = getFromToDate(sdf, new Date(), n, 0, 0);
    String endDate = getFromToDate(sdf, new Date(), n, 1, 0);
    return beginDate + "," + endDate;
  }
  //查找时间段
  public static String getNWeekTimeIntervalTwo(int n, SimpleDateFormat sdf)
  {
    String beginDate = getFromToDate(sdf, new Date(), n, 0, 1);
    String endDate = getFromToDate(sdf, new Date(), n, 1, 1);
    return beginDate + "," + endDate;
  }

  //查找本周时间段
  public static String getThisWeekTimeInterval(SimpleDateFormat sdf)
  {
    return getNWeekTimeInterval(1, sdf);
  }

 //查找工作日
  public static String getWeekDays(int i)
  {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    Calendar calendar1 = Calendar.getInstance();

    calendar1.setFirstDayOfWeek(2);

    int dayOfWeek = calendar1.get(7);
    if (1 == dayOfWeek) {
      calendar1.add(5, -1);
    }

    int day = calendar1.get(7);

    calendar1.add(5, 7 * i);

    calendar1.add(5, calendar1.getFirstDayOfWeek() - day);

    String beginDate = sdf.format(calendar1.getTime());
    calendar1.add(5, 6);

    String endDate = sdf.format(calendar1.getTime());

    return beginDate + "," + endDate;
  }


  public static String getLastWeekTimeInterval(SimpleDateFormat sdf)
  {
    return getNWeekTimeIntervalTwo(1, sdf);
  }

  public static boolean isWeekend(String sdate, SimpleDateFormat sdf)
  {
    boolean flag = false;
    try {
      Date date = sdf.parse(sdate);
      Calendar cal = Calendar.getInstance();
      cal.setTime(date);
      if ((cal.get(7) == 7) || (cal.get(7) == 1))
        flag = true;
    }
    catch (ParseException e) {
      e.printStackTrace();
    }
    return flag;
  }

  public static boolean isHoliday(String sdate, List<String> list)
    throws ParseException
  {
    if (list.size() > 0) {
      for (int i = 0; i < list.size(); i++) {
        if (sdate.equals(list.get(i))) {
          return true;
        }
      }
    }
    return false;
  }

  public static String getNexDay(String dateStr)
  {
    Calendar c = Calendar.getInstance();
    Date date = null;
    String nextDay = "";
    try {
      date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
      c.setTime(date);
      int day = c.get(5);
      c.set(5, day + 1);
      nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return nextDay;
  }

  public static String getNexDay(String dateStr, int n)
  {
    Calendar c = Calendar.getInstance();
    Date date = null;
    String nextDay = "";
    try {
      date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
      c.setTime(date);
      int day = c.get(5);
      c.set(5, day + n);
      nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return nextDay;
  }

  public static String getPreDay(String dateStr, int n)
  {
    Calendar c = Calendar.getInstance();
    Date date = null;
    String nextDay = "";
    try {
      date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
      c.setTime(date);
      int day = c.get(5);
      c.set(5, day - n);
      nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return nextDay;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值