`
askjsp
  • 浏览: 21377 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

给定一个起始日期和一个结束日期,怎么获取中间每天的日期?

阅读更多

比如说现在有一个日期 2010-01-01 有另一日期 2010-10-01

怎么计算中间总共的天数和之间的每一天呢?

比如说有这样一个算法:

 

public class MyDate{

private int days;
private List dayList;

public void calDate(String sDate,String eDate){
   .........

   days=xxx;
   dayList=xxx;
}

}

 

    这样的一个算法怎么写呢?

 

    朋友们帮想下,谢谢了

分享到:
评论
5 楼 mfkvfn 2011-03-11  
1楼的代码有几个问题:
(1)她要求的是String类型。需要做校验。
(2)有可能startDate或endDate是null。你那代码15行或17行的地方可能会出现NullPointerException。
(3)如果startDate<endDate的话,你那天数差是一个负数。而且期间的每一天 结果也是错的。因为 for (int index = 1; index < result; index++)这里result<0所以不会输出任何天数。
(4) long result = (endValue - startValue) / 1000 / 60 / 60 / 24; 这里改成 long result = (endValue - startValue) / (1000*60*60*24); 效率更好。具体原因是除法效率比乘法要差。
4 楼 Dreamsleep 2010-09-27  
将两个时间求毫秒    然后做差  最后除以24*60*60*1000 就OK啦
3 楼 zhao103804 2010-09-25  
看到这个让我想起了很久很久以前做过的万年历那个程序
2 楼 askjsp 2010-09-20  
rainsilence 写道
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


public class MyDate {
	
	private List<Date> dayList = new ArrayList<Date>();
	
	
	public long countDays(Date startDate, Date endDate) {
		
		long startValue = startDate.getTime();
		
		long endValue = endDate.getTime();
		
		if (startValue > endValue) {
			long temp = endValue;
			endValue = startValue;
			startValue = temp;
		}
		
		// 计算天数差
		long result = (endValue - startValue) / 1000 / 60 / 60 / 24;
		
		Calendar cal = Calendar.getInstance();
	
		cal.setTime(startDate);
		
		// 计算期间的每一天
		for (int index = 1; index < result; index++) {
			cal.add(Calendar.DATE, 1);
			dayList.add(cal.getTime());
		}
		
		return result;
	}
	
	
	public List<Date> getDayList() {
		return dayList;
	}


	public static void main(String args[]) {
		Calendar cal1 = Calendar.getInstance();
		
		// 2010/1/9
		cal1.set(Calendar.YEAR, 2010);
		cal1.set(Calendar.MONTH, 0);
		cal1.set(Calendar.DATE, 9);
		
		// 2010/1/29
		Calendar cal2 = Calendar.getInstance();
		cal2.set(Calendar.YEAR, 2010);
		cal2.set(Calendar.MONTH, 0);
		cal2.set(Calendar.DATE, 29);
		
		Date startDate = cal1.getTime();
		Date endDate = cal2.getTime();
		
		MyDate dateCal = new MyDate();
		
		System.out.println(dateCal.countDays(startDate,  endDate));
		
		List<Date> list = dateCal.getDayList();
		
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd EEE");
		
		for (Date date : list) {
			System.out.println(dateFormat.format(date));
		}
		
	}
}


简单。。。

呵呵,谢谢啦,
1 楼 rainsilence 2010-09-20  
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


public class MyDate {
	
	private List<Date> dayList = new ArrayList<Date>();
	
	
	public long countDays(Date startDate, Date endDate) {
		
		long startValue = startDate.getTime();
		
		long endValue = endDate.getTime();
		
		if (startValue > endValue) {
			long temp = endValue;
			endValue = startValue;
			startValue = temp;
		}
		
		// 计算天数差
		long result = (endValue - startValue) / 1000 / 60 / 60 / 24;
		
		Calendar cal = Calendar.getInstance();
	
		cal.setTime(startDate);
		
		// 计算期间的每一天
		for (int index = 1; index < result; index++) {
			cal.add(Calendar.DATE, 1);
			dayList.add(cal.getTime());
		}
		
		return result;
	}
	
	
	public List<Date> getDayList() {
		return dayList;
	}


	public static void main(String args[]) {
		Calendar cal1 = Calendar.getInstance();
		
		// 2010/1/9
		cal1.set(Calendar.YEAR, 2010);
		cal1.set(Calendar.MONTH, 0);
		cal1.set(Calendar.DATE, 9);
		
		// 2010/1/29
		Calendar cal2 = Calendar.getInstance();
		cal2.set(Calendar.YEAR, 2010);
		cal2.set(Calendar.MONTH, 0);
		cal2.set(Calendar.DATE, 29);
		
		Date startDate = cal1.getTime();
		Date endDate = cal2.getTime();
		
		MyDate dateCal = new MyDate();
		
		System.out.println(dateCal.countDays(startDate,  endDate));
		
		List<Date> list = dateCal.getDayList();
		
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd EEE");
		
		for (Date date : list) {
			System.out.println(dateFormat.format(date));
		}
		
	}
}


简单。。。

相关推荐

Global site tag (gtag.js) - Google Analytics