获得两个日期之前的所有日期或日历

package unicode;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * 求两个日期之前的所有日期或日历
 * 
 * @author ben
 * 
 */
public class CalendarTest {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

	public static void main(String[] args) {
		System.out.println(getDateList("2014-10-25", "2014-11-12"));
		System.out.println(getDates(getCalendar("2014-10-25"), getCalendar("2014-11-12")));
	}
	/**
	 * 两个日期之前的所有日期
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public static List<String> getDateList(String startDate, String endDate) {
		// 日期格式化
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		// 存放结果的集合
		List<String> result = new ArrayList<String>();
		try {
			// 初始化开始日期
			Calendar p_start =getCalendar(startDate);
			// 初始化结束日期
			Calendar p_end = getCalendar(endDate);
			// 中间变量,开始指向开始日期
			Calendar temp = p_start;
			while (temp.before(p_end)) {
				// 把适合的日期加入结果集
				result.add(sdf.format(temp.getTime()));
				// 中间变量+1
				temp.add(Calendar.DAY_OF_YEAR, 1);
			}
			result.add(endDate);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 得到两个日历之前的所有日历
	 * @param p_start
	 * @param p_end
	 * @return
	 */
	public static List<Date> getDates(Calendar p_start, Calendar p_end) {
		List<Date> result = new ArrayList<Date>();
		Calendar temp =p_start;
		while (temp.before(p_end)) {
			result.add(temp.getTime());
			temp.add(Calendar.DAY_OF_YEAR, 1);
		}
		return result;
	}
	/**
	 * 把日期字符串转换成日历对象
	 * @param dateStr
	 * @return
	 */
	public static Calendar getCalendar(String dateStr) {
		Calendar c = Calendar.getInstance();
		// 日期格式化
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			c.setTime(sdf.parse(dateStr));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return c;
	}
}


结果如下:

[2014-10-25, 2014-10-26, 2014-10-27, 2014-10-28, 2014-10-29, 2014-10-30, 2014-10-31, 2014-11-01, 2014-11-02, 2014-11-03, 2014-11-04, 2014-11-05, 2014-11-06, 2014-11-07, 2014-11-08, 2014-11-09, 2014-11-10, 2014-11-11, 2014-11-12]


[Sat Oct 25 00:00:00 CST 2014, Sun Oct 26 00:00:00 CST 2014, Mon Oct 27 00:00:00 CST 2014, Tue Oct 28 00:00:00 CST 2014, Wed Oct 29 00:00:00 CST 2014, Thu Oct 30 00:00:00 CST 2014, Fri Oct 31 00:00:00 CST 2014, Sat Nov 01 00:00:00 CST 2014, Sun Nov 02 00:00:00 CST 2014, Mon Nov 03 00:00:00 CST 2014, Tue Nov 04 00:00:00 CST 2014, Wed Nov 05 00:00:00 CST 2014, Thu Nov 06 00:00:00 CST 2014, Fri Nov 07 00:00:00 CST 2014, Sat Nov 08 00:00:00 CST 2014, Sun Nov 09 00:00:00 CST 2014, Mon Nov 10 00:00:00 CST 2014, Tue Nov 11 00:00:00 CST 2014]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值