Ⅰ 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 + "分钟";
}
然后做一个测试,调用这个方法测试一下:
可以看出两个日期时间相差几天,几小时,几分钟都可以算出来。
(1)java判断两个时间扩展阅读:
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 类实搏友团现了这个接口。
Ⅱ java 中怎么比较两个时间相差的秒数
方法:
java 计算两个时间相差可以用getTime()来获得两个时间的毫秒数,可以这样计算得出两个时间的秒数的相差如下:
public int calLastedTime(Date startDate) {long a = new Date().getTime();long b = startDate.getTime();int c = (int)((a - b) / 1000);return c;}
(2)java判断两个时间扩展阅读:
1、通过Date类来获取当前时间
Date day=new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(day));
2、通过System类中的currentTimeMillis方法来获取当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(df.format(System.currentTimeMillis()));
3、通过Calendar类来获取当前时间
Calendar c = Calendar.getInstance();//可以对每个时间域单独修改
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second);
4、 通过Date类来获取当前时间
Date date = new Date();
String year = String.format("%tY", date);
String month = String.format("%tB", date);
String day = String.format("%te", date);
System.out.println("今天是:"+year+"-"+month+"-"+day);
Ⅲ 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+" 天");
}
运行结果如下:
(3)java判断两个时间扩展阅读:
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 日期时间
Ⅳ java 判断两个时间段是不是有交集
publicclassDateKit{
/**
时间段的比较处理,如果包含了传来的时段了,就说明时间冲突了
*@return
*/
publicstaticbooleanisContain(Date[]a,Date[]b){
longastatr=a[0].getTime();
longaend=a[1].getTime();
longbstatr=b[0].getTime();
longbend=b[1].getTime();
//a0包在了b0~b1之间
if(astatr>=bstatr&&astatr<=bend)returntrue;
//b0包在了a0~a1之间
if(astatr<=bstatr&&aend>=bstatr)returntrue;
returnfalse;
}
/**
时间段的比较处理,如果包含了传来的时段了,就说明时间冲突了,(允许首尾相等而不包含的情况)
*@return
*/
(Date[]a,Date[]b){
longastatr=a[0].getTime();
longaend=a[1].getTime();
longbstatr=b[0].getTime();
longbend=b[1].getTime();
//a0包在了b0~b1之间
if(astatr>=bstatr&&astatr<bend)returntrue;
//b0包在了a0~a1之间
if(astatr<=bstatr&&aend>bstatr)returntrue;
//相等
if(astatr==bstatr&&aend==bend)returntrue;
returnfalse;
}
//功能工具扩展
publicstaticbooleanisContain(Stringastatr,Stringaend,Stringbstatr,Stringbend){
returnisContain(newString[]{astatr,aend},newString[]{bstatr,bend});
}
publicstaticbooleanisContain(String[]aStr,String[]bStr){
returnisContain(aStr,bStr,"yyyy-MM-ddHH:mm:ss");
}
publicstaticbooleanisContain(String[]aStr,String[]bStr,Stringpattern){
finalSimpleDateFormatSF=newSimpleDateFormat(pattern);
try{
returnisContain(newDate[]{SF.parse(aStr[0]),SF.parse(aStr[1])},newDate[]{SF.parse(bStr[0]),SF.parse(bStr[1])});
}catch(Exceptione){
e.printStackTrace();
}
returnfalse;
}
(Stringastatr,Stringaend,Stringbstatr,Stringbend){
returnisContainEnd(newString[]{astatr,aend},newString[]{bstatr,bend});
}
(String[]aStr,String[]bStr){
returnisContainEnd(aStr,bStr,"yyyy-MM-ddHH:mm:ss");
}
(String[]aStr,String[]bStr,Stringpattern){
finalSimpleDateFormatSF=newSimpleDateFormat(pattern);
try{
returnisContainEnd(newDate[]{SF.parse(aStr[0]),SF.parse(aStr[1])},newDate[]{SF.parse(bStr[0]),SF.parse(bStr[1])});
}catch(Exceptione){
e.printStackTrace();
}
returnfalse;
}
}
测试:
publicstaticvoidmain(String[]args)throwsParseException{
finalSimpleDateFormatSF=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
Date[]a={SF.parse("2017-07-0611:53:00"),SF.parse("2017-07-0614:52:00")};
Date[]b={SF.parse("2017-07-0614:52:00"),SF.parse("2017-07-0616:52:00")};
System.out.println("您好,智能的电脑!请问:");
for(Datedate:a){
System.out.print(date.toString()+"~");
}
System.out.println("包含:");
for(Datedate:b){
System.out.print(date.toString()+"~");
}
System.out.println("吗?");
booleanret=DateKit.isContain(a,b);
System.out.println("o(∩_∩)o哈哈~我猜是:"+ret);
ret=DateKit.isContainEnd(a,b);
System.out.println("o(∩_∩)o哈哈~允许首尾相等我猜是:"+ret);
}
找了半天, 没见写的好的. 自己动手写个, 问题是 两个时段,, 大部分人给的是 两个时间点..