java根据开始时间和结束时间,计算中间天数,并打印
1import java.text.SimpleDateFormat; 2import java.util.Date; 3 4 5public class Calcdate { 6 static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 7 static SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd"); 8 9 public static void main(String[] args)throws Exception{ 10 Date beginTime = sdf.parse("2015-04-23 12:32:44"); 11// Date endTime = sdf.parse("2015-04-23 14:56:44"); 12 Date endTime = sdf.parse("2015-04-29 14:56:44"); 13 14 long diff = (endTime.getTime() - beginTime.getTime()) / (86400 * 1000); 15 System.out.println("diff = " + diff); 16 17 Date sb = null; 18 Date se = null; 19 if(diff == 0){ 20 sb = beginTime; 21 se = endTime; 22 23 String ss = String.format("%d> Sb=%s, Se=%s", 1, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se)); 24 System.out.println(ss); 25 }else { 26 int i = 0; 27 while (i <= diff) { 28 if (i == 0) { 29 sb = beginTime; 30 se = sdf.parse(ymd.format(sb) + " 23:59:59"); 31 } else if (i == diff) { 32 sb = sdf.parse(ymd.format(endTime) + " 00:00:00"); 33 se = endTime; 34 } else { 35 se = new Date(beginTime.getTime() + i * 24 * 60 * 60 * 1000); 36 sb = sdf.parse(ymd.format(se) + " 00:00:00"); 37 se = sdf.parse(ymd.format(se) + " 23:59:59"); 38 } 39 40 String ss = String.format("%d> Sb=%s, Se=%s", i, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se)); 41 System.out.println(ss); 42 43 i++; 44 } 45 } 46 } 47} 48 49diff = 6 500> Sb=2015-04-23 12:32:44, Se=2015-04-23 23:59:59 511> Sb=2015-04-24 00:00:00, Se=2015-04-24 23:59:59 522> Sb=2015-04-25 00:00:00, Se=2015-04-25 23:59:59 533> Sb=2015-04-26 00:00:00, Se=2015-04-26 23:59:59 544> Sb=2015-04-27 00:00:00, Se=2015-04-27 23:59:59 555> Sb=2015-04-28 00:00:00, Se=2015-04-28 23:59:59 566> Sb=2015-04-29 00:00:00, Se=2015-04-29 14:56:44