2个日期间隔算法,每隔多少个月后的第几天

计算2个日期之间 每隔N个月后的第N天 得到所有的天数。

如下:private static String date1="2010-01-01";
private static String date2="2014-09-01";

2个日期之间每隔5个月的第5天输出为:

2010-06-06
2010-11-11
2011-04-16
2011-09-21
2012-02-26
2012-07-31
2013-01-05
2013-06-10
2013-11-15

 

 

-------------------------------------------------------code------------------------------------------------

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateTemp {

private static String date1="2010-01-01";
private static String date2="2014-09-01";
private static String tempMoth="5";
private static String tempDay="5";
private static String FORMAT_DAY="yyyy-MM-dd";
public static void main(String [] args){
   SimpleDateFormat formt=new SimpleDateFormat("yyyy-MM-dd");
   try {
    int tempMothInt=Integer.parseInt(tempMoth);
    int tempDayInt=Integer.parseInt(tempDay);
    Date d1=formt.parse(date1);

    Date d2=formt.parse(date2);
    Calendar startCal = new GregorianCalendar();
         Calendar dealCal = new GregorianCalendar();
         startCal.setTime(d1);
         dealCal.setTime(d2);

//计算2个日期之间相差的月份 共多少个月
         int diffMonth = (dealCal.get(Calendar.YEAR) - startCal.get(Calendar.YEAR)) * 12 + dealCal.get(Calendar.MONTH) - startCal.get(Calendar.MONTH) + 1;


         String temp="";

//相差的月份除以每隔多少个月取整就是要循环的次数
         for(int i=0;i<diffMonth/tempMothInt;i++){
           
            if(i==0){

//得到相加月份和天数后的日期,如果是第一次循环传入参数日期
               temp=getAfterMoth(d1,tempMothInt,tempDayInt);
               System.out.println(temp);
            }else{

//如果不是第一次循环则得到上一次相加后的日期当参数传入得到相加月份和天数
              Date date=formt.parse(temp);
            temp=getAfterMoth(date,tempMothInt,tempDayInt);
        System.out.println(temp);
            }
            }
   } catch (ParseException e) {
    e.printStackTrace();
   }
  

}

//将一个日期相加月份和天数
public static String getAfterMoth(Date date,int moth,int days)
{
   SimpleDateFormat df = new SimpleDateFormat(FORMAT_DAY);
   Calendar calendar = Calendar.getInstance();  
   calendar.setTime(date);

//在月份上加moth个月
   calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH) +moth);

//在天数上加days个天。
   calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + days);
   return df.format(calendar.getTime());
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值