计算两个日期(8位)之间的月份数将中间的月份存放于一个List中.

package com.potevio.rnd.tobacco.mine;

import java.util.ArrayList;
import java.util.List;

/**
 * @description 最近的一个项目做统计的时候,为了方便用户跨段查询,允许客户选择一段时间,后台计算来两个日期之间的月份数,最后把月份添加到一个List里面
 * @author Zhou-Jingxian
 * @date Jan 5, 2010
 */
public class DataUtil {

	/**
	 * 
	 * @param starttime
	 *            20080610
	 * @param endtime
	 *            20091020
	 * @return List<string> 数组里面的每一项是从开始月份到结束月份排列
	 */
	public static List<string> formatDate(String starttime, String endtime) {
		String startYear = starttime.substring(0, 4);
		String endYear = endtime.substring(0, 4);
		String startMonth = starttime.substring(4, 6);
		String endMonth = endtime.substring(4, 6);

		List<string> datalist = new ArrayList<string>();
		if (endYear.compareTo(startYear) &gt; 0) {// 不在同一年
			int endY = Integer.parseInt(endYear);
			int startY = Integer.parseInt(startYear);
			int temp = endY - startY;
			switch (temp) {
				case 1: {
					// 开始年份
					int startM = Integer.parseInt(startMonth);
					int temp1 = 12 - startM;
					for (int i = 0; i  9) {
							tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
							tempM = "" + tempMonth;
//							System.out.println("2..."+startYear+tempM);
						}
						datalist.add(startYear + tempM);
					}
	
					// 结束年份
					int endM = Integer.parseInt(endMonth);
					int temp2 = endM;
					for (int i = 0; i  endM ? endM : (1 + i);
						if (i  8) {
							tempM = "" + tempMonth;
//							System.out.println("4..."+endYear+tempM);
						}
						datalist.add(endYear + tempM);
					}
					break;
				}//end case(1)
				default: {
					// 开始年份
					int startM = Integer.parseInt(startMonth);
					int temp1 = 12 - startM;
					for (int i = 0; i  9) {
							tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
							tempM = "" + tempMonth;
//							System.out.println("6..."+startYear+tempM);
						}
						datalist.add(startYear + tempM);
					}
					// 中间年份
					for (int i = 1; i  9) {
								date += j;
//								System.out.println("8..."+date);
							}
							datalist.add(date);
						}
					}
	
					// 结束年份
					int endM = Integer.parseInt(endMonth);
					int temp2 = endM;
					for (int i = 0; i  endM ? endM : (1 + i);
						if (i  8) {
							tempM = "" + tempMonth;
//							System.out.println("10..."+endYear+tempM);
						}
						datalist.add(endYear + tempM);
					}
					break;
				}//end default
			}//end switch

		} else if (0 == endYear.compareTo(startYear)) {// 同一年

			int startM = Integer.parseInt(startMonth);
			int endM = Integer.parseInt(endMonth);
			int temp3 = endM - startM;
			for (int i = 0; i  9) {
					tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
					tempM = "" + tempMonth;
//					System.out.println("12..."+startYear+tempM);
				}
				datalist.add(startYear + tempM);
			}
		}
		return datalist;
	}

	public static void main(String args[]) {
		String t1 = "20080510";
		String t2 = "20081010";
		String t3 = "20080920";
		String t4 = "20081220";
		String t5 = "20090410";
		String t6 = "20090920";
		String t7 = "20091220";
		String t8 = "20101220";
	
		System.out.println(formatDate(t1, t3).size()+"--1--");
		System.out.println(formatDate(t1, t4).size()+"--2--");
		System.out.println(formatDate(t3, t4).size()+"--3--");
		System.out.println(formatDate(t2, t4).size()+"--4--");
		System.out.println(formatDate(t1, t5).size()+"--5--");
		System.out.println(formatDate(t1, t6).size()+"--6--");
		System.out.println(formatDate(t1, t7).size()+"--7--");
		System.out.println(formatDate(t2, t6).size()+"--8--");
		System.out.println(formatDate(t2, t7).size()+"--9--");
		System.out.println(formatDate(t2, t8).size()+"--10--");
	}

}
</string></string></string></string>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值