package pkg.chart;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Long startM = sdf.parse("2009-1-14").getTime();
Long endM = sdf.parse("2010-1-14").getTime();
long result = (endM - startM) / (24 * 60 * 60 * 1000);
System.out.println("差:" + result + "天");
Date startDate = sdf.parse("2009-01-14");
Calendar startTime = Calendar.getInstance();
startTime.clear();
startTime.setTime(startDate);
for (int i = 0; i < (int)result;i++) {
String str = startTime.get(Calendar.YEAR) + "-"
+ startTime.get(Calendar.MONTH) + "-"
+ startTime.get(Calendar.DAY_OF_MONTH);
System.out.println(str);
startTime.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
package demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 遍歷兩個日期之間天數(shù)的算法
*
*/
public class MyTest {
public static void main(String[] args) throws ParseException {
String start = "2007-01-27";
String end = "2008-03-04";
//字符串轉(zhuǎn)換成日期
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date startDate=format.parse(start);
Calendar startTime=Calendar.getInstance();
startTime.clear();
startTime.setTime(startDate);
int startYear = startTime.get(Calendar.YEAR);
int startMonth = startTime.get(Calendar.MONTH);
int startDay = startTime.get(Calendar.DAY_OF_MONTH);
Date endDate=format.parse(end);
Calendar endTime=Calendar.getInstance();
endTime.clear();
endTime.setTime(endDate);
int endYear = endTime.get(Calendar.YEAR);
int endMonth = endTime.get(Calendar.MONTH);
int endDay = endTime.get(Calendar.DAY_OF_MONTH);
System.out.println("注意西方的月份從0到11,中國的月份從1到12");
System.out.println("下面輸入的是中國的日期.注意其中的轉(zhuǎn)換問題");
System.out.println("start date : " + start);
System.out.println("end date : " + end);
int count = 0;
for (int x = startYear; x <= endYear; x++) {
//羅馬歷法產(chǎn)生年份公元1582年
int gregorianCutoverYear = 1582;
boolean isLeapYear = x >= gregorianCutoverYear ?
((x%4 == 0) && ((x%100 != 0) || (x%400 == 0))) :
(x%4 == 0);
//判斷是否是閏年
//java方法
//boolean isLeapYear = (new GregorianCalendar()).isLeapYear(x);
String isBigYear = "是平年";
if (isLeapYear) {
isBigYear = "是閏年";
}
System.out.println(x + "年" + isBigYear);
//獲取開始月的最大天數(shù)
//java方法
//SimpleDateFormat aFormat=new SimpleDateFormat("yyyy-MM-dd");
//Date date = aFormat.parse(start);
//Calendar time = Calendar.getInstance();
//time.clear();
//time.setTime(date);
//int max=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數(shù)
//System.out.println(max);
//獲取開始月的最大天數(shù);大月是1,3,5,7,8,10,12;小月是4,6,9,11;特殊月是2
int max = 0;
if (startMonth == 1) {
if (isLeapYear) {
max = 29;
}
if (!isLeapYear) {
max = 28;
}
}
if (startMonth == 3 || startMonth == 5 || startMonth == 8 || startMonth == 10) {
max = 30;
}
if (startMonth == 0 || startMonth == 2 || startMonth == 4 || startMonth == 6 || startMonth == 7 || startMonth == 9 || startMonth == 11) {
max = 31;
}
//循環(huán)每個月
//如果在日期范圍內(nèi)月份循環(huán)時自增到了一年的最后一個月就將月份初始化到一月份
int y = 0;
//如果是開始日期的第一個年的月數(shù)就從開始月數(shù)循環(huán)
if (x == startYear) {
y = startMonth;
}
for (; y < 12; y++) {
//獲取當(dāng)月的最大天數(shù);大月是1,3,5,7,8,10,12;小月是4,6,9,11;特殊月是2
max = 0;
if (y == 1) {
if (isLeapYear) {
max = 29;
}
if (!isLeapYear) {
max = 28;
}
}
if (y == 3 || y == 5 || y == 8 || y == 10) {
max = 30;
}
if (y == 0 || y == 2 || y == 4 || y == 6 || y == 7 || y == 9 || y == 11) {
max = 31;
}
int ty = y + 1;
System.out.println(x + "年" + ty + "月");
//循環(huán)每一天
int z = 1;
//如果是開始日期的第一個月的天數(shù)就從開始天數(shù)循環(huán)
if (x == startYear && y == startMonth) {
z = startDay;
}
for (; z <= max; z++) {
count++;
System.out.println( x + "年" + ty + "月" + z + "日");
if (x == endYear && y == endMonth && z == endDay) {
break;
}
}
//如果已經(jīng)遍歷過了截至日期的最后月份就中止月份的循環(huán)
if (x == endYear && y == endMonth) {
break;
}
}
}
System.out.println(start + " 到 " + end + " 的天數(shù)差:" + count);
}
}
柳德才
13691193654
18942949207
QQ:422157370
liudecai_zan@126.com湖北-武漢-江夏-廟山