public class MyDate {public int year;public int month;public int day;//1.必须得校验传入参数的合法性// year : 1 <= year// month : 1 <= month <= 12// day : 1 <= day <= 每个月的天数//2. 如果不符合,应该怎么办// 抛异常public MyDate(int year, int month, int day) {if (year  < 1){RuntimeException exception = new RuntimeException("year 参数错误");throw exception;}if (month < 1 || month > 12){throw  new RuntimeException("month 参数错误");}if (day < 1 || day > getMonthDay(year,month)){throw  new RuntimeException("day 参数错误");}this.year = year;this.month = month;this.day = day;}//用于复制from对象public MyDate(MyDate from){this.year =from.year;this.month = from.month;this.day = from.day;}private int getMonthDay(int year,int month) {switch (month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:if(isLeapYear(year))return 29;elsereturn 28;default:return -1;}}private boolean isLeapYear(int year) {return ( year % 400 == 0 ) || ( year % 4 == 0 && year % 100 != 0 );}@Overridepublic String toString() {return String.format("%4d-%02d-%02d",year,month,day);}public int 计算相差天数(MyDate from){if(this.compareTo(from) <= 0  ){throw new RuntimeException("from 的日期必须是当前日期之前");}int count = 0;MyDate fromCopy = new MyDate(from);while(fromCopy.compareTo(this) < 0){fromCopy.increment();System.out.println(fromCopy);count ++;}return count;}private void increment() {if(day < getMonthDay(year,month)){day ++;return;}else{day = 1;if(month < 12) {month++;}else {month = 1;year ++;}return;}}//定义一个方法比较(this,other)//规定,如果this < from 返回任意负数//如果 this == from 返回0//如果 this > from 返回任意正数public int compareTo(MyDate from){if(year != from.year){//            if (year > from.year){//                return 1;
//            }else {//                return -1;
//            }return year - from.year;}//说明year == from.yearif (month != from.month) {return month - from.month;}//说明year == from.year && month == from.monthreturn day - from.day;}}

具体使用:

public class MyDateTest {public static void main(String[] args) {MyDate from = new MyDate(2021,2,1);MyDate to = new MyDate(2021,2,15);//System.out.println(to.compareTo(from));System.out.printf("从 %s 到 %s 经过了 %d 天\n",from,to,to.计算相差天数(from));}
}

运行结果如下:

Java计算两日期相差天数源码相关推荐

  1. oracle计算两日期相差多少秒,分钟,小时,天

    --计算两个时间差相差多少秒 select (sysdate-to_date('2021/12/14 17:00:00','yyyy/mm/dd hh24:mi:ss'))*24*60*60 from ...

  2. Java计算两个日期的相差天数以及除去双休日的相差天数

    Java计算两个日期的相差天数 计算两个日期相差天数 Java1.8新类LocalDateTime 计算相差天数 计算两个日期相差天数(除去双休日) 计算两个日期相差天数 Java1.8新类Local ...

  3. JAVA计算两个日期相差多少天

    前言 有时候我们在JAVA中会比较两个日期相差多少天,这里有几个实现方法供大家参考,偶尔会用到,也当做自己收藏.btw,同时也要鄙视一下我的好基友从百度搜到的一个答案的作者,写了毒代码,计算个日期而已 ...

  4. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...

  5. java如何计算时间天数差,java计算两个时间相差天数的方法汇总

    问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...

  6. MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

    计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...

  7. Java 计算两个日期相减并转换成月份

    来自:https://www.shixinwl.com/article/132 Java 计算两个日期相减并转换成月份 在网上找了很多类似方法结果都是垃圾,于是乎记录下来给需要的人 import ja ...

  8. java计算两个日期之间天数

    java计算两个日期之间天数 jxts = DateFunction.getNumberOfDays(jxErq, qsjxrq); public static long getNumberOfDay ...

  9. java计算指定日期的上个月

    文章目录 java计算指定日期的上个月 Calendar类 API 代码实现 java计算指定日期的上个月 Calendar类 Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方 ...

最新文章

  1. pytorch问题索引
  2. python如何安装torch_PyTorch安装与基本使用详解
  3. 【备忘录】物料分类账的启用配置
  4. 《C++ Primer中文版(第5版)》学习笔记与习题完整发布!
  5. Stegsolve(Data Extract):lsb隐写
  6. 第六章 数组和索引器 (6.6 索引器)
  7. Head first servlet and jsp学习笔记
  8. quill鼠标悬浮 出现提示_jQuery实现鼠标悬停显示提示信息窗口的方法
  9. opencv ORB角检测
  10. Kotlin入门(2)让App开发变得更容易
  11. 大数据力推产业转型升级
  12. 软件工程期中作业-阅读和提问
  13. Atitit sprbt 多数据源mltds datasource multi 目录 第一节 App cfg 1 第二节 Cfg bean 1 第三节 Use 4 第一节 App cfg
  14. ModelSim 2019安装教程
  15. SpringBoot+websocket 实现web聊天功能(单聊、保存消息)
  16. 办公小技巧,批量修改文件名,手把手教你
  17. 微信赌场——H5棋牌游戏渗透之旅
  18. android sim卡应用程序,Android双SIM卡API
  19. 与领导吃饭需要注意什么
  20. 在英文版的remix部署,拿到部署地址在中文版的remix 中 合约地址中输入地址,再部署可以实现调用 java调用智能合约Unmatched arguments from index 2

热门文章

  1. 某集网将我的信息给了谁?还是不良卖家不想卖东西
  2. 3 Sum Closest
  3. NSArray与NSSet的区别
  4. JSON数据格式---JSON语法规则、JSON文件
  5. 前端基础-git(二):轻松搞定git创建仓库,操作仓库内容
  6. LeetCode--41.缺失的第一个正数(C)
  7. 算法的概念与伪代码的使用
  8. 7-157 求一元二次方程的根 (20 分)
  9. 采用分治法求一个整数序列中的最大值和最小值
  10. 真神器!在家也能控制公司的电脑了