- package ben.util;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /**
- * 时间相距
- * @author Ben
- * @version 1.0
- * @date 2009-10-21 16:38:51
- */
- public class DateDistance {
- /**
- * 两个时间之间相差距离多少天
- * @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[] 返回值为:{天, 时, 分, 秒}
- */
- public static long[] getDistanceTimes(String str1, String str2) {
- 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秒
- */
- public static String getDistanceTime(String str1, String str2) {
- 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 + "秒";
- }
- }
-
- /**
- * 判断2个时间相差多少天、多少小时、多少分<br>
- * <br>
- * @param pBeginTime 请假开始时间<br>
- * @param pEndTime 请假结束时间<br>
- * @return String 计算结果<br>
- * @Exception 发生异常<br>
- */
- public static String TimeDiff(String pBeginTime, String pEndTime) throws Exception {
- format = new SimpleDateFormat("yyyy-MM-dd hh:mm");
- Long beginL = format.parse(pBeginTime).getTime();
- Long endL = format.parse(pEndTime).getTime();
- Long day = (endL - beginL)/86400000;
- Long hour = ((endL - beginL)%86400000)/3600000;
- Long min = ((endL - beginL)%86400000%3600000)/60000;
- return ("实际请假" + day + "小时" + hour + "分钟" + min);
- }
如果我date1="1987-01-01" date2="2010-01-01" 之间相差多少天?? 在java中如何算。。。。。。???
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test { 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)/(3600*24*1000); System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天"); } }