计算两个日期(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>

 

你可能感兴趣的:(J#)