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

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

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

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 @   sumling  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示