天天看点

用以计算y年月日与同年的月之间的天数(

import java.util.Scanner;

import org.junit.Test;

public class tt {

/**

 * 用以计算y年m1月d1日与同年的m2月d2之间的天数(m2>=m1),并打印计算结果.

 * 若m1=m2且d1=d2则算1天.在闰年时,2月有29天.闰年的年号由以下方式确定:

 * 该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年.

 * 例:输入1997,2,27,3,10时,输出为从1997年2月27日到3月10日共有12天.

 */

boolean isleapyear;

@Test

public void test() {

// TODO Auto-generated method stub

@SuppressWarnings("resource")

Scanner ss = new Scanner(System.in);

System.out.println("请输入年份");

int y = ss.nextInt();

System.out.println("请输入月");

int m1 = ss.nextInt();

System.out.println("请输入日");

int d1 = ss.nextInt();

System.out.println("请输入另一个月");

int m2 = ss.nextInt();

System.out.println("请输入另一个日");

int d2 = ss.nextInt();

if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0) {

isleapyear = true;

} else {

isleapyear = false;

}

int day = 0;// 定义一个变量来计算天数

if (m1 > m2) {

// 打印不符合要求

System.out.println("不符合要求");

} else if (m1 == m2) {

// 特殊化处理相同月份

if (d1 > d2) {

day = d2 - d1 + 1;

System.out.println("相隔天数为:" + day);

// m1<m2

// 根据具体月份累加天数

int mmm = getDay(m1);

day = mmm - d1;

System.out.println(mmm);

for (int i = m1 + 1; i < m2; i++) {

day +=getDay(i);

day = day + d2 + 1;

// 通过月份获取天数;

public  int getDay(int mounth) {

int day = 0;

switch (mounth) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

// 这些月份是31天

day = 31;

break;

case 4:

case 6:

case 9:

case 11:

// 这些月份是30天

day = 30;

case 2:

// 特殊化处理是否闰年

// TODO: 自己写闰年判断方法

if (isleapyear) {

day = 29;

day = 28;

default:

// 一般不会进到这里

return day;

本文转自 Y幕徐 51CTO博客,原文链接:http://blog.51cto.com/765133133/1419464

继续阅读