用以计算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) {

// 打印不符合要求

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

} else {

day = d2 - d1 + 1;

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

}

} else {

// 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;

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


}

}



// 通过月份获取天数;

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;

break;

case 2:

// 特殊化处理是否闰年

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

if (isleapyear) {

day = 29;

} else {

day = 28;

}

break;

default:

// 一般不会进到这里

break;


}

return day;

}

}


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

相关文章
|
6月前
|
前端开发
如何将后端传的时间戳转化为年月日
如何将后端传的时间戳转化为年月日
40 0
|
7月前
|
C语言 C++
C++ 如果设置日期 & 时间基础篇
C++ 如果设置日期 & 时间基础篇
|
9月前
计算日期到天数转换
计算日期到天数转换
56 0
|
10月前
|
Linux
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
72 0
|
11月前
计算LocalDate之间的天数差,方便快捷
计算LocalDate之间的天数差,方便快捷
230 0
|
12月前
|
C语言 C++
C++ 如果设置日期 & 时间基础篇
C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
如何确定两个日期之间的工作日有多少天、计算—年中每周内各日期出现次数、确定当前记录和下一条记录之间相差的天数【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本章节的三个需求:确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数有些许难度,不过建议还是学会比较好。
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
计算两个字符串类型的日期相差的天数或者小时数,计算日期字符串到今天的年龄
计算两个字符串类型的日期相差的天数或者小时数,计算日期字符串到今天的年龄
122 0
C# 计算两个日期的时间间隔
C# 计算两个日期的时间间隔
569 0
给定两个年月日,计算之间相隔的天数(数学)
给定两个年月日,计算之间相隔的天数(数学)