Java根据输入的日期计算日期
2019-07-20 17:34
1501 查看
题目:
/*
* Date 存储 年-月-日 信息
* 原则: 一切从用户角度出发
* 功能:
* 1) 初始化
* i. 传入年/月/日
* 2. 不传,今天 回头
* 2) 多少天之后的年/月/日
* 3) 多少天之前的年/月/日
*/
主要思路:
1、在类里面的构造方法中写入年月日的输入的格式及条件
2、月份的天数是一个不确定的值,4,6,9,11月是30天,1,3,5,7,8,10,12月是31天,2月在闰年是29天,所以写了一个方法,根据输入的月份确定天数。
3、计算之后的时间,根据输入月份的天数和需要改变的天数对年和月进行修改,计算之前的时间原理一样,不过这块容易出问题,需要细心一点。
4、最后就是输出,toString()
[code] /* * Date 存储 年-月-日 信息 * 原则: 一切从用户角度出发 * 功能: * 1) 初始化 * i. 传入年/月/日 * 2. 不传,今天 回头 * 2) 多少天之后的年/月/日 * 3) 多少天之前的年/月/日 */ class Date{ public int year; public int month; public int day; public Date(int year,int month,int day){ //年[1949,2049] if(year<1949||year>2049){ System.err.println("你输入的年份不在范围内!"); return; } //月[1,12] if(month<1||month>12){ System.err.println("你输入的月份不在范围内!"); return; } //天 if(day<1||day>cal(year,month)){ System.err.println("你输入的天数不在范围内!"); return; } this.year=year; this.month=month; this.day=day; } public int cal(int year,int month){ //2月 if(month==2){ if(year%4==0&&year%100!=0){ return 29; } if(year%400==0){ return 29; } } //4,6,9,11月 int[] thirty={4,6,9,11} ; for(int i=0;i<thirty.length;i++){ if(month==thirty[i]){ return 30; } } //1,3,5,7,8,10,12月 int[] thirtyone={1,3,5,7,8,10,12}; for(int i=0;i<thirtyone.length;i++){ if(month==thirtyone[i]){ return 31; } } return 28; } //计算之后的时间 public Date after(int day1){ day+=day1; while(day>cal(year,month)){ day-=cal(year,month); month+=1; if(month>12){ month=1; year+=1; } } return this; } //计算之前的时间 public Date before(int day2){ if(day2<day){ day-=day2; return this; } while(day2>day){ month-=1; day=cal(year,month)-(day2-day); if(month<1){ month=12; year-=1; } } return this; } public String toString(){ return String.format("%d-%d-%d",year,month,day); } } public class TestDate{ public static void main(String[] args){ Date now1=new Date(2019,7,20); Date now2=new Date(2000,7,20); Date a=now1.after(80); Date b=now2.before(5); System.out.println(a.toString()); System.out.println(b.toString()); } }
相关文章推荐
- java-根据当前日期计算前几天的日期
- java 根据输入的日期返回日期中的年份月份,格式为“2009年3月”
- java中根据是否输入日期进行动态查询的sql查询语句
- 计算特定日期的前一天和后一天,根据输入的月,日获取该月日属于什么季节
- Java实现根据输入的日期以及天数,获取此日期之后的天数的工作日
- 根据输入的日期计算该日期的农历天干地支及当年属相
- Java 根据指定日期计算所在周的周一和周日
- java 输入日期取星期几的方法 计算两个时间段中间的
- java中根据出生日期计算年龄
- JAVA入门------输入年月日,计算日期是今年的第几天
- 【Java】Java根据出生日期计算还有几天的生日
- java根据出生日期和当前时间计算年龄
- Calendar根据输入的年份和周数计算该周的开始日期和结束日期
- java 根据开始日期 ,需要的工作日天数 ,计算工作截止日期,并返回截止日期
- Java根据控制台输入的特定日期格式拆分日期
- 黑马程序员 Java中根据YYYY-MM-DD格式的日期计算为星期几的两种实现方式
- Java 根据指定日期计算所在周的周一和周日
- Java 根据日期计算星期几
- 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天(java)
- Java根据日期计算周