获取两个日期中间的天数

         周四碰到一个需求,需要获取两个日期中间的天数。 比如输入是2015-10-10    和2015-10-15,输出是2015-10-10     2015-10-11      2015-10-12     2015-10-13    2015-10-14    2015-10-15  

        办法其实很简单,把输入换算成日期,然后挨个遍历。

        获取start到end中间的所有日期:

/**  
	* @Title: getDateList  
	* @Description: TODO(获取start到end中间的所有日期)  
	* @param  start  开始日期
	* @param  end     结束日期
	* @return List<String>    返回类型   
	*/
	private static List<String> getDateList(String start,String end){
		List<String> result = new ArrayList<String>();
		Date d1 = null;
		Date d2 = null;
		try {
			d1 = format.parse(start);
			d2 = format.parse(end);
			while (!d1.after(d2)) {
				result.add(format.format(d1));
				Calendar cal = Calendar.getInstance();
				cal.setTime(d1);
				cal.add(Calendar.DATE, 1);
				d1 = cal.getTime();

			}
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
	}

   获取start到end中间的大于等于今天的数据:

/**  
	* @Title: getDateList  
	* @Description: TODO(获取start到end中间的大于今天的日期)  
	* @param  start  开始日期
	* @param  end     结束日期
	* @return List<String>    返回类型   
	*/
	private static List<String> getDateListAfterNow(String start,String end){
		String now = format.format(new Date());
		if(start.compareTo(now) < 0){
			start = now;
		}
		return getDateList(start,end);
	}

 测试程序和全局变量:

public static final String dateFormat = "yyyy-MM-dd";
	public static final SimpleDateFormat format = new SimpleDateFormat(dateFormat);
	/**  
	 * @Title: main  
	 * @Description: TODO(这里用一句话描述这个方法的作用)  
	 * @param @param args    设定文件  
	 * @return void    返回类型   
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String start = "2015-11-02";
		String end = "2015-11-08";
		System.out.println((getDateList(start,end)));
		System.out.println((getDateListAfterNow(start,end)));
	}

 结果:

[2015-11-02, 2015-11-03, 2015-11-04, 2015-11-05, 2015-11-06, 2015-11-07, 2015-11-08]
[2015-11-07, 2015-11-08]

 

 

你可能感兴趣的:(获取两个日期中间的天数)