【JAVA精彩编程200例】练习001--判断指定日期的经过天数

判断指定日期的经过天数
思路1:通过Calendar变量的add方法逐次+1。变量sum记录+1次数。

package 实例001;

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class LeapYear {

	public static void main(String[] args) {
		Calendar beginDate = Calendar.getInstance();
		Calendar endDate = Calendar.getInstance();
		
		beginDate.set(2000, 1, 1);
		endDate.set(2016, 1, 1);
		
		CalcDays(beginDate, endDate);
	}
	
	private static void CalcDays(Calendar beginDate,Calendar endDate) {

		int sum = 0;
		while(!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR) && beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH) && beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {
			beginDate.add(beginDate.DATE, 1);
			sum++;
		}
		System.out.println("一共经过了:" + sum + "天");
	}

	private static boolean isLeapYear() {
		Scanner sc = new Scanner(System.in);

		System.out.print("请输入要检查是否为闰年的年份:");
		int year = 0;
		try {
			year = sc.nextInt();
			if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
				// 闰年
				System.out.println(year + "年是闰年。");
				return true;
			} else {
				System.out.println(year + "年不是闰年。");
			}
		} catch (Exception e) {
			System.out.println("输入年份异常!");
		} 
		return false;
	}

}

思路2:通过计算年,月,日的差值计算经过天数

package 实例001;

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class LeapYear {

	public static void main(String[] args) {
		Calendar beginDate = Calendar.getInstance();
		Calendar endDate = Calendar.getInstance();

		beginDate.set(2000, 1, 1);
		endDate.set(2000, 3, 5);

		//CalcDays(beginDate, endDate); //方法1
		CalcDaysMode2(beginDate, endDate); //方法2
	}

	private static void CalcDays(Calendar beginDate, Calendar endDate) {

		int sum = 0;
		while (!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR)
				&& beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH)
				&& beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {
			beginDate.add(beginDate.DATE, 1);
			sum++;
		}
		System.out.println("一共经过了:" + sum + "天");
	}

	private static void CalcDaysMode2(Calendar beginDate, Calendar endDate) {

		int sum = 0;

		// 天数 不为1置为1
		if (beginDate.get(beginDate.DAY_OF_MONTH) != 1) {
			System.out.println(beginDate.get(beginDate.DAY_OF_MONTH));
			sum -= (beginDate.get(beginDate.DAY_OF_MONTH) - 1);
			beginDate.set(beginDate.DAY_OF_MONTH, 1);
			System.out.println(beginDate.get(beginDate.DAY_OF_MONTH));
		}
		if (endDate.get(endDate.DAY_OF_MONTH) != 1) {
			System.out.println(endDate.get(endDate.DAY_OF_MONTH));
			sum += endDate.get(endDate.DAY_OF_MONTH) - 1;
			endDate.set(endDate.DAY_OF_MONTH, 1);
			System.out.println(endDate.get(endDate.DAY_OF_MONTH));
		}

		// 月份天数
		while (!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR)
				&& beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH)
				&& beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {

			switch (beginDate.get(Calendar.MONTH)) {// sum+=表示至下月1号经过的天数
			case 0:
				sum += 31;
				break;
			case 1:
				if (isLeapYear(beginDate.get(beginDate.YEAR))) {
					System.out.println("闰年");
					sum += 29;
				} else {
					System.out.println("平年");
					sum += 28;
				}
				break;
			case 2:
				sum += 31;
				break;
			case 3:
				sum += 30;
				break;
			case 4:
				sum += 31;
				break;
			case 5:
				sum += 30;
				break;
			case 6:
				sum += 31;
				break;
			case 7:
				sum += 31;
				break;
			case 8:
				sum += 30;
				break;
			case 9:
				sum += 31;
				break;
			case 10:
				sum += 30;
				break;
			case 11:
				sum += 31;
				break;
			default:
				break;
			}
			beginDate.add(beginDate.MONTH, 1);
			System.out.println();
			System.out.println("一共经过了:" + sum + "天");
		}
		System.out.println("一共经过了:" + sum + "天");
	}

	private static boolean isLeapYear(int year) {

		if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
			// 闰年
			System.out.println(year + "年是闰年。");
			return true;
		} else {
			System.out.println(year + "年不是闰年。");
		}
		return false;
	}

	private static boolean isLeapYear() {
		Scanner sc = new Scanner(System.in);

		System.out.print("请输入要检查是否为闰年的年份:");
		int year = 0;
		try {
			year = sc.nextInt();
			if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
				// 闰年
				System.out.println(year + "年是闰年。");
				return true;
			} else {
				System.out.println(year + "年不是闰年。");
			}
		} catch (Exception e) {
			System.out.println("输入年份异常!");
		}
		return false;
	}

}
发布了17 篇原创文章 · 获赞 1 · 访问量 431

猜你喜欢

转载自blog.csdn.net/yezhuangqiu7638/article/details/104066479