java 判断两个时间相差的天数!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 判断两个时间相差的天数!相关的知识,希望对你有一定的参考价值。



package com.datedaycha;    
import java.text.SimpleDateFormat;    
import java.util.Calendar;    
import java.util.Date;    
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;    
/*    
 * java 判断两个时间相差的天数    
1、实现目标    
  输入:两个日期    
  输出:两个日期相差的天数    
2、代码实现    
方法1:    
  通过Calendar类的日期比较。注意:这里需要考虑一下:    
  日期是跨年份的,如一个是2012年,一个是2015年的    
    年份是分闰年和平年的,各自的天数不同    
 */    
public class date_day_cha1 {    
	/**方法1    
     * date2比date1多的天数    
     * @param date1        
     * @param date2    
     * @return        
     */    
public static int differentDays_one(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);    
//加个时间日期大小 判断  管他谁大谁小    
int diff ;    
if(day1<day2) {    
diff = day2 - day1;    
} else {    
diff = day1 - day2;    
}    
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) ;    
return timeDistance + diff ;    
}    
else     //同一年    
{    
//            System.out.println("判断day2 - day1 : " + (day2-day1));    
//            return day2-day1;    
       	System.out.println("判断day2 - day1 : " + diff);    
return diff;    
}    
}    
/* 直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数。*/    
/**    
         * 通过时间秒毫秒数判断两个时间的间隔    
         * @param date1    
         * @param date2    
         * @return    
         */    
public static int differentDaysByMillisecond(Date date1,Date date2)    
{    
       	//加个时间日期大小 判断  管他谁大谁小    
       	long time1 = date1.getTime();    
long time2 = date2.getTime();    
long diff ;    
if(time1<time2) {    
diff = time2 - time1;    
} else {    
diff = time1 - time2;    
}    
//int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));    
int days = (int) (diff /(1000*3600*24));    
return days;    
}    
//测试    
public static void main(String[] args) throws Exception {    
       	String dateStr = "2017-1-1 0:0:0";    
String dateStr2 = "2017-9-14 10:57:01";    
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("两个日期的差距 方法1:" + differentDays_one(date,date2));    
System.out.println("两个日期的差距 方法2:" + differentDaysByMillisecond(date,date2));    
Date d=new Date();    
System.out.println(d.getTime());    
System.out.println("距离今天-两个日期的差距 方法1:" + differentDays_one(date,d));    
System.out.println("距离今天-两个日期的差距 方法2:" + differentDaysByMillisecond(d,date));    
} catch (ParseException e) {    
e.printStackTrace();    
}    
		}    
}  


方法2:
package com.datedaycha;    
import java.text.DateFormat;    
import java.text.SimpleDateFormat;    
import java.util.Date;    
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;    
/**     
* 时间相距     
* @author LC    
* @version 1.0     
* @date 2017-9-14 10:59:04    
*/     
public class date_day_cha2 {    
	/**     
     * 两个时间之间相差距离多少天     
     * @param one 时间参数 1:     
     * @param two 时间参数 2:     
     * @return 相差天数     
     */      
public static long getDistanceDays(String str1, String str2) throws Exception{    
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");    
Date one;    
Date two;    
long days=0;    
try {    
one = df.parse(str1);    
two = df.parse(str2);    
long time1 = one.getTime();    
long time2 = two.getTime();    
long diff ;    
if(time1<time2) {    
diff = time2 - time1;    
} else {    
diff = time1 - time2;    
}    
days = diff / (1000 * 60 * 60 * 24);    
} catch (ParseException e) {    
e.printStackTrace();    
}    
return days;    
}    
/**     
     * 两个时间相差距离多少天多少小时多少分多少秒     
     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     
     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     
     * @return long[] 返回值为:{天, 时, 分, 秒}     
     * @throws Exception     
     */      
public static long[] getDistanceTimes(String str1, String str2) throws Exception {    
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
Date one;    
Date two;    
long day = 0;    
long hour = 0;    
long min = 0;    
long sec = 0;    
try {    
one = df.parse(str1);    
two = df.parse(str2);    
long time1 = one.getTime();    
long time2 = two.getTime();    
long diff ;    
if(time1<time2) {    
diff = time2 - time1;    
} else {    
diff = time1 - time2;    
}    
day = diff / (24 * 60 * 60 * 1000);    
hour = (diff / (60 * 60 * 1000) - day * 24);    
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);    
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);    
} catch (ParseException e) {    
e.printStackTrace();    
}    
long[] times = {day, hour, min, sec};    
return times;    
}    
/**     
     * 两个时间相差距离多少天多少小时多少分多少秒     
     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     
     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     
     * @return String 返回值为:xx天xx小时xx分xx秒     
     * @throws Exception     
     */      
public static String getDistanceTime(String str1, String str2) throws Exception {    
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
Date one;    
Date two;    
long day = 0;    
long hour = 0;    
long min = 0;    
long sec = 0;    
try {    
one = df.parse(str1);    
two = df.parse(str2);    
long time1 = one.getTime();    
long time2 = two.getTime();    
long diff ;    
if(time1<time2) {    
diff = time2 - time1;    
} else {    
diff = time1 - time2;    
}    
day = diff / (24 * 60 * 60 * 1000);    
hour = (diff / (60 * 60 * 1000) - day * 24);    
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);    
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);    
} catch (ParseException e) {    
e.printStackTrace();    
}    
return day + "天" + hour + "小时" + min + "分" + sec + "秒";    
}    
//测试    
public static void main(String[] args) throws Exception {    
   	String dateStr = "2008-1-1 1:21:28";    
String dateStr2 = "2017-9-14 10:57:01";    
Long days=getDistanceDays(dateStr, dateStr2);    
long[] longdays2;    
longdays2=getDistanceTimes(dateStr, dateStr2);    
String stringday3=  getDistanceTime(dateStr, dateStr2);    
System.out.println("返回值return:相差多少天:"+days);    
System.out.println("返回值return:long[] 返回值为:{天, 时, 分, 秒}----:"+longdays2[0]+"天"+longdays2[1]+"小时"+longdays2[2]+"分"+longdays2[3]+"秒");    
System.out.println("返回值return:String 返回值为:xx天xx小时xx分xx秒 -----:"+stringday3);    
	}    
}


以上是关于java 判断两个时间相差的天数!的主要内容,如果未能解决你的问题,请参考以下文章

java 判断两个时间相差的天数!

Java判断两个时间相差得天数

java计算两个日期之间的天数

利用SQL语句如何获得两个日期之间相差的天数

判断两个日期相差的天数

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