本文目录一览:
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使用以下三种方法来比较两个日期:
- 使用
getTime()
方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。 - 使用方法
before()
,after()
和equals()
。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))
返回true。 - 使用
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使用以下三种方法来比较两个日期:
- 使用
getTime()
方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。 - 使用方法
before()
,after()
和equals()
。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))
返回true。 - 使用
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这方面的知识。