java计算两个时间相差天数的方法

这篇具有很好参考价值的文章主要介绍了java计算两个时间相差天数的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法1:

  通过Calendar类的日期比较。注意:这里需要考虑一下:

  • 日期是跨年份的,如一个是2012年,一个是2015年的
  • 年份是分闰年和平年的,各自的天数不同

    /**

     * date2比date1多的天数

     * @param date1 

     * @param date2

     * @return 

     */

     public static int differentDays(Date date1,Date date2)

     {

     Calendar cal1 = Calendar.getInstance();

     cal1.setTime(date1);

       

     Calendar cal2 = Calendar.getInstance();

     cal2.setTime(date2);

     int day1= cal1.get(Calendar.DAY_OF_YEAR);

     int day2 = cal2.get(Calendar.DAY_OF_YEAR);

       

     int year1 = cal1.get(Calendar.YEAR);

     int year2 = cal2.get(Calendar.YEAR);

     if(year1 != year2) //同一年

     {

      int timeDistance = 0 ;

      for(int i = year1 ; i < year2 ; i ++)

      {

      if(i%4==0 && i%100!=0 || i%400==0) //闰年  

      {

       timeDistance += 366;

      }

      else //不是闰年

      {

       timeDistance += 365;

      }

      }

        

      return timeDistance + (day2-day1) ;

     }

     else //不同年

     {

      System.out.println("判断day2 - day1 : " + (day2-day1));

      return day2-day1;

     }

     }

  • 方法2:

      直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数。

     /**

     * 通过时间秒毫秒数判断两个时间的间隔

     * @param date1

     * @param date2

     * @return

     */

     public static int differentDaysByMillisecond(Date date1,Date date2)

     {

     int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));

     return days;

     }

  • 测试代码:
  • public static void main(String[] args) 

     {

     String dateStr = "2008-1-1 1:21:28";

     String dateStr2 = "2010-1-2 1:21:28";

     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     try 

     {

      Date date2 = format.parse(dateStr2);

      Date date = format.parse(dateStr);

        

      System.out.println("两个日期的差距:" + differentDays(date,date2));

      System.out.println("两个日期的差距:" + differentDaysByMillisecond(date,date2));

     } catch (ParseException e) {

      e.printStackTrace();

     }

     }

  • 结果:

    两个日期的差距:732
    两个日期的差距:732
    两种实现方式的比较:

      方式一的话,只是通过日期来进行比较两个日期的相差天数的比较,没有精确到相差到一天的时间。如果是只是纯粹通过日期(年月日)来比较比较的话就是方式一。

      对于方式二,是通过计算两个日期相差的毫秒数来计算两个日期的天数差的。一样会有一个小问题,就是当他们相差是23个小时的时候,它就不算一天了。如下面的两个日期

    2015-1-1 21:21:28
    2015-1-2 1:21:28

  • 测试代码:

  • public static void main(String[] args) 

     {

     String dateStr = "2015-1-1 21:21:28";

     String dateStr2 = "2015-1-2 1:21:28";

     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     try 

     {

      Date date2 = format.parse(dateStr2);

      Date date = format.parse(dateStr);

        

      System.out.println("两个日期的差距:" + differentDays(date,date2));

      System.out.println("两个日期的差距:" + differentDaysByMillisecond(date,date2));

     } catch (ParseException e) {

      e.printStackTrace();

     }

     }

结果:

两个日期的差距:1
两个日期的差距:0

  两种方式的不同了,在具体时间相差不到24小时时,方式2的方式不算一天,而方式1是通过日期(年月日)来判断的,所以算相差一天。文章来源地址https://www.toymoban.com/news/detail-419774.html

到了这里,关于java计算两个时间相差天数的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSQL时间相差天数

    执行SQL: 执行结果:

    2024年02月06日
    浏览(27)
  • Java计算两个日期之间的天数差

    在Java中,我们可以使用Java 8引入的 java.time 包来处理日期和时间。下面是一种方法来计算两个日期之间的天数差。 首先,我们需要导入相关的类: 然后,我们可以编写一个方法来计算日期之间的天数差: 在这个方法中,我们使用了 ChronoUnit.DAYS.between 方法来计算两个 LocalDa

    2024年02月03日
    浏览(30)
  • java 计算两个日期之间相隔的天数

    在Java 8中,你可以使用 java.time 包中的 LocalDate 类和 Period 类来计算两个日期字符串之间相隔的天数。以下是一个示例代码: 在这个示例中,我们首先将日期字符串解析为 LocalDate 对象,然后使用 Period.between() 方法计算两个日期之间的时期。最后,我们使用 Period.getDays() 方法获

    2024年02月05日
    浏览(40)
  • java计算两个日期间的天数

    1、精确到年月日 2、精确到秒,向下取值 如有问题,欢迎指正~ 如能帮到您,欢迎点赞收藏~

    2024年02月11日
    浏览(37)
  • 鸿蒙开发ArkTS通过Time.before及after方法判断两个时间的先后(类似于java的Time类)

    本文使用ArkTS实现了类似于java的Time类的功能方法。 OpenHarmony或者HarmonyOS的 ArkTS 是否有类似于java的Time类,可以通过Time.before及after方法判断两个时间的先后 ? 可以实现此功能 类似于下面的代码:

    2024年02月04日
    浏览(26)
  • java天数计算函数(当前月天数、某月总天数、某月剩余天数)4种方法实现

    1,Java8 LocalDate 2,利用日历函数 3,也是利用日历函数,但是不需要 throws ParseException 测试样例代码:   4,当月剩余天数 5,获取当前月天数 测试代码: 测试效果截图:  

    2024年02月12日
    浏览(30)
  • Java 实现两个日期之间相差多少天

    Java 实现两个日期之间相差多少天 运行结果:

    2024年02月15日
    浏览(37)
  • MySQL中如何计算时间相差的分钟数

    在MySQL中,计算时间相差的分钟数是一个非常常见的需求。本文将介绍一些实用的函数,帮助你轻松地计算时间相差的分钟数。 1. TIMEDIFF函数 TIMEDIFF函数是MySQL中用于计算时间差的函数之一。它的语法如下: e1e2) e1e2是两个时间值,可以是时间类型的列名或字符串。 使用TIMED

    2024年02月06日
    浏览(32)
  • Java进行计算两个时间间隔

    在Java中,我们经常需要计算两个时间之间的间隔,比如计算某个任务的执行时间、计算两个事件发生的时间间隔等等。Java提供了一些类和方法来处理时间和日期相关的操作,本文将介绍如何使用Java来计算两个时间之间的间隔,并提供相应的代码示例。 1. 基本概念 在开始之

    2024年04月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包