Java 计算月份跨度并获取中间值

	/**
	 * 求日期月份跨度
	 * @param date1
	 * @param date2
	 * @return
	 * @throws Exception
	 * @作者 80303857
	 */
	public static List<String> getMs (String date1, String date2) throws Exception{
		List<String> result = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTime(sdf.parse(date1));
        c2.setTime(sdf.parse(date2));
		int m1 = c1.get(Calendar.MONTH)+1;
		int m2 = c2.get(Calendar.MONTH)+1;
		int y1 = c1.get(Calendar.YEAR);
		int y2 = c2.get(Calendar.YEAR);
		
		while (y1!=y2||m1!=m2){
			StringBuffer sb = new StringBuffer();
			if(y1!=y2){
				if (y1<y2){
					sb.append(y1).append(m1<10?"0"+m1:m1);
					result.add(sb.toString());
					m1++;
					if (m1>12){
						y1++;
						m1=1;
					}
				}else{
					sb.append(y2).append(m2<10?"0"+m2:m2);
					result.add(sb.toString());
					m2++;
					if (m2>12){
						y2++;
						m2=1;
					}
				}
			}else{
				if (m1<m2){
					sb.append(y1).append(m1<10?"0"+m1:m1);
					result.add(sb.toString());
					m1++;
				}else{
					sb.append(y2).append(m2<10?"0"+m2:m2);
					result.add(sb.toString());
					m2++;
				}
			}
		}
		return result;
	}

 比如2016-11-01至2017-02-03那么返回结果为201611,201612,101701。并不会包含最后一个值或相等月份的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值