Java计算两日期相差天数源码
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计算两日期相差天数源码相关推荐
- oracle计算两日期相差多少秒,分钟,小时,天
--计算两个时间差相差多少秒 select (sysdate-to_date('2021/12/14 17:00:00','yyyy/mm/dd hh24:mi:ss'))*24*60*60 from ...
- Java计算两个日期的相差天数以及除去双休日的相差天数
Java计算两个日期的相差天数 计算两个日期相差天数 Java1.8新类LocalDateTime 计算相差天数 计算两个日期相差天数(除去双休日) 计算两个日期相差天数 Java1.8新类Local ...
- JAVA计算两个日期相差多少天
前言 有时候我们在JAVA中会比较两个日期相差多少天,这里有几个实现方法供大家参考,偶尔会用到,也当做自己收藏.btw,同时也要鄙视一下我的好基友从百度搜到的一个答案的作者,写了毒代码,计算个日期而已 ...
- Java计算两个字符串日期之间的天数差
Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...
- java如何计算时间天数差,java计算两个时间相差天数的方法汇总
问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...
- MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...
- Java 计算两个日期相减并转换成月份
来自:https://www.shixinwl.com/article/132 Java 计算两个日期相减并转换成月份 在网上找了很多类似方法结果都是垃圾,于是乎记录下来给需要的人 import ja ...
- java计算两个日期之间天数
java计算两个日期之间天数 jxts = DateFunction.getNumberOfDays(jxErq, qsjxrq); public static long getNumberOfDay ...
- java计算指定日期的上个月
文章目录 java计算指定日期的上个月 Calendar类 API 代码实现 java计算指定日期的上个月 Calendar类 Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方 ...
最新文章
- pytorch问题索引
- python如何安装torch_PyTorch安装与基本使用详解
- 【备忘录】物料分类账的启用配置
- 《C++ Primer中文版(第5版)》学习笔记与习题完整发布!
- Stegsolve(Data Extract):lsb隐写
- 第六章 数组和索引器 (6.6 索引器)
- Head first servlet and jsp学习笔记
- quill鼠标悬浮 出现提示_jQuery实现鼠标悬停显示提示信息窗口的方法
- opencv ORB角检测
- Kotlin入门(2)让App开发变得更容易
- 大数据力推产业转型升级
- 软件工程期中作业-阅读和提问
- Atitit sprbt 多数据源mltds datasource multi 目录 第一节 App cfg	1 第二节 Cfg bean	1 第三节 Use	4 第一节 App cfg
- ModelSim 2019安装教程
- SpringBoot+websocket 实现web聊天功能(单聊、保存消息)
- 办公小技巧,批量修改文件名,手把手教你
- 微信赌场——H5棋牌游戏渗透之旅
- android sim卡应用程序,Android双SIM卡API
- 与领导吃饭需要注意什么
- 在英文版的remix部署,拿到部署地址在中文版的remix 中 合约地址中输入地址,再部署可以实现调用 java调用智能合约Unmatched arguments from index 2