java比较两个时间的差值,java计算两个时间相差时间

发布时间:2022-11-21

本文目录一览:

  1. java中如何计算出两个日期之间相差多少天
  2. Java计算两个日期时间相差几天,几小时,几分钟等
  3. Java比较两个时间相差多少天,多少个月,多少年

java中如何计算出两个日期之间相差多少天

思路就是根据它们相差的毫秒数除以每天的毫秒数(60*60*24*1000),代码如下:

public static void main(String[] args) throws ParseException {
    String date1 = "1987-01-01";
    String date2 = "2010-01-01";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
    Date d1 = sdf.parse(date1);
    Date d2 = sdf.parse(date2);
    long daysBetween = (d2.getTime() - d1.getTime() + 1000000) / (60 * 60 * 24 * 1000);
    System.out.println("1987-01-01 与 2010-01-01 相隔 " + daysBetween + " 天");
}

运行结果如下:

扩展资料:

Java使用以下三种方法来比较两个日期:

  1. 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  2. 使用方法 before()after()equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  3. 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。 SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。 例如:
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。 注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。 以上实例编译运行结果如下: 当前时间为: 2018-09-14 10:16:34

参考资料:

  • Java官方API接口-Date
  • 菜鸟教程-Java 日期时间

Java计算两个日期时间相差几天,几小时,几分钟等

思路是先计算两个日期相差的毫秒数,然后分别根据每天的毫秒数、每小时的毫秒数、每分钟的毫秒数来计算相差几天,几小时,几分钟。具体代码如下:

public static String getDatePoor(Date endDate, Date nowDate) {
    long nd = 1000 * 24 * 60 * 60; // 每天毫秒数
    long nh = 1000 * 60 * 60;      // 每小时毫秒数
    long nm = 1000 * 60;           // 每分钟毫秒数
    long diff = endDate.getTime() - nowDate.getTime(); // 获得两个时间的毫秒时间差异
    long day = diff / nd;          // 计算差多少天
    long hour = diff % nd / nh;    // 计算差多少小时
    long min = diff % nd % nh / nm; // 计算差多少分钟
    return day + "天" + hour + "小时" + min + "分钟";
}

然后做一个测试,调用这个方法测试一下: 可以看出两个日期时间相差几天,几小时,几分钟都可以算出来。

扩展资料:

Java使用以下三种方法来比较两个日期:

  1. 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  2. 使用方法 before()after()equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  3. 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

参考资料:

  • Oracle官方API接口-Util-Date
  • Oracle官方API接口-SimpleDateFormat
  • 菜鸟教程-Java 日期时间

Java比较两个时间相差多少天,多少个月,多少年

Java比较两个时间相差,可以使用 Calendar 类的 API,实例如下:

package com.test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * @description 日期比较天 月 年
 * @author
 */
public class DateTest {
    public static void main(String[] args) {
        String date = "2008-06-12";
        DateTest.compareDate(date, null, 0);
        DateTest.compareDate(date, null, 1);
        DateTest.compareDate(date, null, 2);
        date = "2006-06-03";
        DateTest.compareDate(date, null, 0);
        DateTest.compareDate(date, null, 1);
        DateTest.compareDate(date, null, 2);
        DateTest.compareDate(date, "2009-06-01", 0);
        DateTest.compareDate(date, "2009-06-01", 1);
        DateTest.compareDate(date, "2009-06-01", 2);
    }
    /**
     * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式
     * @param date2 被比较的时间 为空(null)则为当前时间
     * @param stype 返回值类型 0为多少天,1为多少个月,2为多少年
     * @return
     */
    public static int compareDate(String date1, String date2, int stype) {
        int n = 0;
        String[] u = {"天", "月", "年"};
        String formatStyle = stype == 1 ? "yyyy-MM" : "yyyy-MM-dd";
        date2 = date2 == null ? DateTest.getCurrentDate() : date2;
        DateFormat df = new SimpleDateFormat(formatStyle);
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        try {
            c1.setTime(df.parse(date1));
            c2.setTime(df.parse(date2));
        } catch (Exception e3) {
            System.out.println("wrong occurred");
        }
        while (!c1.after(c2)) { // 循环对比,直到相等,n 就是所要的结果
            n++;
            if (stype == 1) {
                c1.add(Calendar.MONTH, 1); // 比较月份,月份+1
            } else {
                c1.add(Calendar.DATE, 1); // 比较天数,日期+1
            }
        }
        n = n - 1;
        if (stype == 2) {
            n = (int) n / 365;
        }
        System.out.println(date1 + " -- " + date2 + " 相差多少" + u[stype] + ":" + n);
        return n;
    }
    /**
     * 得到当前日期
     * @return
     */
    public static String getCurrentDate() {
        Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
        return simple.format(date);
    }
}

运行结果:

2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
2006-06-03 -- 2009-06-01 相差多少天:1094
2006-06-03 -- 2009-06-01 相差多少月:36
2006-06-03 -- 2009-06-01 相差多少年:2

可以参考上面的程序,如果还有什么不明白的,可以自己去ITjob网上看看,有介绍Java这方面的知识。