使用库函数可以计算两个时间的毫秒差值,在转换成天数就可以了。

public class CalDays {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print(calDay(2008, 3, 4, 2001, 5, 23));}public static int calDay(int y1, int m1, int d1, int y2, int m2, int d2) {int result = 0;Date date1 = new Date(y1, m1, d1); //先转换成日期对象Date date2 = new Date(y2, m2, d2);long dis = date1.getTime() - date2.getTime();//时间毫秒差值result = Math.abs( (int) (dis / 1000 / 24 / 60 / 60));//转换为天数return result;}}

使用简单的加减乘除实现两个日期(年月日)的相隔天数。

  1. 相同年份只需要算当年的天数再相减
  2. 连续的年份算开始年份当年的剩下时间加上结束年份当年已过的天数
  3. 不连续的年份在连续的年份的基础上还要加上中间的年份的天数

闰年要分开算,闰年366天,否则365年。2月分开算,闰年29天,平年28天,否则是根据积偶月份算30天或31天。

public class CalDays2 {public static void main(String[] args) {// TODO Auto-generated method stub//System.out.print(calDay(2001, 5, 23, 2008, 3, 4)); //2477System.out.print(calDay(2001, 1, 1, 2001, 5, 23));}public static int calDay(int y1, int m1, int d1, int y2, int m2, int d2) { //1为开始时间,2为结束时间int result = 0;if(y1 < y2) { //相差2年及以上for(int i = y1 + 1; i < y2; i++) {if(isLeapYear(i)) {//闰年366天result += 366;}else {result += 365;}}}if(y1 != y2) { //不同年份if(isLeapYear(y1)) {//闰年下result += 366 - calDaysCurrentYear(y1, m1, d1) + calDaysCurrentYear(y2, m2, d2);} else {result += 365 - calDaysCurrentYear(y1, m1, d1) + calDaysCurrentYear(y2, m2, d2);}} else {result = calDaysCurrentYear(y2, m2, d2) - calDaysCurrentYear(y1, m1, d1);}return result;}public static int calDaysCurrentYear(int year, int month, int day) { //当年过了多少天int res = 0;month -= 1; //当月不算if(month > 1) { //超过2月份了if(month % 2 == 0) { //偶数月res = (month / 2 - 1) * 30 + month / 2 * 31;} else { res = (month / 2 - 1) * 30 + (month / 2 + 1) * 31;}if(isLeapYear(year)) { //另算闰年的二月份res += 29;} else {res += 28;}} else if(month == 1) {res = 31;}res += day;return res;}public static boolean isLeapYear(int year) { //是否是闰年if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)return true;return false;}}

计算两个日期的相隔天数相关推荐

  1. C#计算两个日期的相隔天数

    DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());  DateTime end = Convert.ToDateTi ...

  2. java两个字符串 相隔天数,计算两个日期之间相隔天数

    直接上传代码: import java.util.Calendar; import java.text.SimpleDateFormat; import java.text.ParseExceptio ...

  3. java怎么计算相隔多少天_java计算两个日期之间相差天数和相隔天数详解

    大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人, ...

  4. C语言:计算同一年内两个日期的相隔天数

    C语言:计算同一年内两个日期的相隔天数 代码思路: 1.不同月 :总天数 = 开始月剩余天数+间隔月天数+截至日 2.相同月:总天数 = 截至日-开始日 代码编写: #include<stdio ...

  5. java 月份间隔_java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  6. 智能跳过节假日算法java_java计算两个日期之前的天数实例(排除节假日和周末)...

    java计算两个日期之前的天数实例(排除节假日和周末) 发布时间:2020-09-02 23:07:01 来源:脚本之家 阅读:108 作者:jingxian 如题所说,计算两个日期之前的天数,排除节 ...

  7. 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...

    如何应用Win10系统电脑中的计算器计算两个日期之间的天数? 相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍 ...

  8. oracle日期相减工作日_Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  9. 计算两个日期相差的天数

    JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...

最新文章

  1. 利用Eclipse/MyEclipse 实体类生成.hbm.xml文件
  2. 【Deep Learning】深度学习中的函数类型
  3. error: a label can only be part of a statement and a declaration is not a statement
  4. 计算机专业的校本教材,[中职计算机专业校本教材建设思路与实践]中职计算机专业课程...
  5. Mysql时间格式转换
  6. MVC学习之分页 【转】
  7. java六大原则_六大Java功能
  8. pymongo 增删改查基本操作汇总(基本)
  9. 《BI那点儿事》数据流转换——透视
  10. python中collections中的counter类_了解Python的collections.Counter类型
  11. linux上的手机管家,闪电手机管家极速版
  12. Linux运维第一课----服务器硬件
  13. Hibernate(2)
  14. python game编写后为什么是一闪而过_《Python编程初学者指南》——1.6 回到Game Over程序...
  15. 计算机网络的商业价值和应用,计算机网络建模数学工具的分析与比较
  16. 用selenium IDE编写自动化测试脚本
  17. 淘宝七天自动确认收货,怎么设计?RabbitMQ延迟队列,消息延迟推送delayed_message入门教程!
  18. 《增长黑客》:针对产品增长---思维导图
  19. 如何判断两条线(轨迹)的重叠区域
  20. 【上班那点事】TO, CC, BCC-办公室邮件门道知多少

热门文章

  1. JavaFX图片浏览并实现缩放
  2. C#采集麦克风话筒声音
  3. Opencv3.0 手写数字识别(Hog特征+SVM分类器)
  4. 阿里研究院第三届学术委员会成立,主席曾鸣畅谈未来学术生态构建
  5. HP Color LaserJet MFP M181fw 耗材问题解决办法
  6. 3万字干货HTML+CSS入门指南(建议收藏)
  7. 农业工程与信息技术是计算机类吗,中国海洋大学农业工程与信息技术概论2020考研复试大纲...
  8. 月份加日期前面用on还是in_英语当中,年月日前加哪个介词on还是in;月日/年月的话呢?...
  9. Oracle VM VirtualBox 解决 “不能为虚拟电脑 打开一个新任务”
  10. 多图!2020年互联网大厂中秋礼盒PK!阿里走情怀,腾讯更复古,最走心的是.........