JAVA 时间差距,两个时间相差多少天,时,分,秒

  1. package ben.util;  
  2.   
  3. import java.text.DateFormat;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. /** 
  9. * 时间相距 
  10. * @author Ben 
  11. * @version 1.0 
  12. * @date 2009-10-21 16:38:51 
  13. */  
  14. public class DateDistance {  
  15.       
  16.     /** 
  17.      * 两个时间之间相差距离多少天 
  18.      * @param one 时间参数 1: 
  19.      * @param two 时间参数 2: 
  20.      * @return 相差天数 
  21.      */  
  22.     public static long getDistanceDays(String str1, String str2) throws Exception{  
  23.         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
  24.         Date one;  
  25.         Date two;  
  26.         long days=0;  
  27.         try {  
  28.             one = df.parse(str1);  
  29.             two = df.parse(str2);  
  30.             long time1 = one.getTime();  
  31.             long time2 = two.getTime();  
  32.             long diff ;  
  33.             if(time1<time2) {  
  34.                 diff = time2 - time1;  
  35.             } else {  
  36.                 diff = time1 - time2;  
  37.             }  
  38.             days = diff / (1000 * 60 * 60 * 24);  
  39.         } catch (ParseException e) {  
  40.             e.printStackTrace();  
  41.         }  
  42.         return days;  
  43.     }  
  44.       
  45.     /** 
  46.      * 两个时间相差距离多少天多少小时多少分多少秒 
  47.      * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
  48.      * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
  49.      * @return long[] 返回值为:{天, 时, 分, 秒} 
  50.      */  
  51.     public static long[] getDistanceTimes(String str1, String str2) {  
  52.         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  53.         Date one;  
  54.         Date two;  
  55.         long day = 0;  
  56.         long hour = 0;  
  57.         long min = 0;  
  58.         long sec = 0;  
  59.         try {  
  60.             one = df.parse(str1);  
  61.             two = df.parse(str2);  
  62.             long time1 = one.getTime();  
  63.             long time2 = two.getTime();  
  64.             long diff ;  
  65.             if(time1<time2) {  
  66.                 diff = time2 - time1;  
  67.             } else {  
  68.                 diff = time1 - time2;  
  69.             }  
  70.             day = diff / (24 * 60 * 60 * 1000);  
  71.             hour = (diff / (60 * 60 * 1000) - day * 24);  
  72.             min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
  73.             sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
  74.         } catch (ParseException e) {  
  75.             e.printStackTrace();  
  76.         }  
  77.         long[] times = {day, hour, min, sec};  
  78.         return times;  
  79.     }  
  80.   
  81.     /** 
  82.      * 两个时间相差距离多少天多少小时多少分多少秒 
  83.      * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
  84.      * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
  85.      * @return String 返回值为:xx天xx小时xx分xx秒 
  86.      */  
  87.     public static String getDistanceTime(String str1, String str2) {  
  88.         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  89.         Date one;  
  90.         Date two;  
  91.         long day = 0;  
  92.         long hour = 0;  
  93.         long min = 0;  
  94.         long sec = 0;  
  95.         try {  
  96.             one = df.parse(str1);  
  97.             two = df.parse(str2);  
  98.             long time1 = one.getTime();  
  99.             long time2 = two.getTime();  
  100.             long diff ;  
  101.             if(time1<time2) {  
  102.                 diff = time2 - time1;  
  103.             } else {  
  104.                 diff = time1 - time2;  
  105.             }  
  106.             day = diff / (24 * 60 * 60 * 1000);  
  107.             hour = (diff / (60 * 60 * 1000) - day * 24);  
  108.             min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
  109.             sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
  110.         } catch (ParseException e) {  
  111.             e.printStackTrace();  
  112.         }  
  113.         return day + "天" + hour + "小时" + min + "分" + sec + "秒";  
  114.     }  
  115. }  

  1.    
    1.     /**
    2.      * 判断2个时间相差多少天、多少小时、多少分<br>
    3.      * <br>
    4.      * @param pBeginTime 请假开始时间<br>
    5.      * @param pEndTime 请假结束时间<br>
    6.      * @return String 计算结果<br>
    7.      * @Exception 发生异常<br>
    8.      */
    9.  public static String TimeDiff(String pBeginTime, String pEndTime) throws Exception {
    10.   format = new SimpleDateFormat("yyyy-MM-dd hh:mm");
    11.   Long beginL = format.parse(pBeginTime).getTime();
    12.   Long endL = format.parse(pEndTime).getTime();
    13.   Long day = (endL - beginL)/86400000;
    14.   Long hour = ((endL - beginL)%86400000)/3600000;
    15.   Long min = ((endL - beginL)%86400000%3600000)/60000;
    16.   return ("实际请假" + day + "小时" + hour + "分钟" + min);
    17.  }
    如果我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+" 天");
      
     }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值