根据时间获取月份第一天、最后一天,两个月之间所有月份,两个日期间所有日期

这几天上班的时候找的方法,没把地址记录下来。。。现在再找找不到了,真不是不写转载,大佬们海涵=。=

获取两个月份之间所有月份

public static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException{
       ArrayList<String> result = new ArrayList<String>();
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月

       Calendar min = Calendar.getInstance();
       Calendar max = Calendar.getInstance();

       min.setTime(sdf.parse(minDate));
       min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

       max.setTime(sdf.parse(maxDate));
       max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

       Calendar curr = min;
       while (curr.before(max)) {
           result.add(sdf.format(curr.getTime()));
           curr.add(Calendar.MONTH, 1);
      }

       return result;
  }

获取两个日期之间所有日期

private List<String> getBetweenDates(String start, String end) {

List<String> result = new ArrayList<String>();

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

   Date start_date = sdf.parse(start);

   Date end_date = sdf.parse(end);

  Calendar tempStart = Calendar.getInstance();

  tempStart.setTime(start_date);

  Calendar tempEnd = Calendar.getInstance();

  tempEnd.setTime(end_date);

  while (tempStart.before(tempEnd)||tempStart.equals(tempEnd)) {

      result.add(sdf.format(tempStart.getTime()));

      tempStart.add(Calendar.DAY_OF_YEAR, 1);

  }

} catch (Exception e) {

e.printStackTrace();

}

Collections.reverse(result);

  return result;

}

获取指定日期月份第一天和最后一天

//获取指定月份第一天
public String getFirstDay(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int year = Integer.parseInt(time.substring(0,4));
int month = Integer.parseInt(time.substring(5,7));
// 获取Calendar类的实例
Calendar c = Calendar.getInstance();
// 设置年份
c.set(Calendar.YEAR, year);
// 设置月份,因为月份从0开始,所以用month - 1
c.set(Calendar.MONTH, month - 1);
// 设置日期
c.set(Calendar.DAY_OF_MONTH, 1);

String date = sdf.format(c.getTime());

return date;
}

//获取指定月份最后一天
public String getLastDay(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int year = Integer.parseInt(time.substring(0,4));
int month = Integer.parseInt(time.substring(5,7));
// 获取Calendar类的实例
Calendar c = Calendar.getInstance();
// 设置年份
c.set(Calendar.YEAR, year);
// 设置月份,因为月份从0开始,所以用month - 1
c.set(Calendar.MONTH, month - 1);
// 获取当前时间下,该月的最大日期的数字
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
// 将获取的最大日期数设置为Calendar实例的日期数
c.set(Calendar.DAY_OF_MONTH, lastDay);

String date = sdf.format(c.getTime());

return date;
}

 

posted @ 2021-06-02 22:18  sumling  阅读(182)  评论(0)    收藏  举报