CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

时间相减的问题?急哦~

楼主mumasgw(公子)2005-03-28 15:42:13 在 Java / J2SE / 扩展类 提问

java中两个日期相减(如     2005-03-28   14:50:23   -   2004-10-21   14:17:03)  
  怎么实现结果(如         1年3个月2天2小时   )   和总的时间(如     22222小时23分12秒)  
  谢了~~ 问题点数:50、回复次数:8Top

1 楼liutang2(Believe I Can Fly!)回复于 2005-03-28 16:55:39 得分 10

现写的,没有完全实现你的功能,可以参考  
  package   com.ljh.date;  
   
  import   java.util.Date;  
  import   java.text.SimpleDateFormat;  
   
  /**  
    *   <p>Title:   </p>  
    *  
    *   <p>Description:   </p>  
    *  
    *   <p>Copyright:   Copyright   (c)   2005</p>  
    *  
    *   <p>Company:   </p>  
    *  
    *   @author   liu  
    *   @version   1.0  
    */  
  public   class   DateFunction   {  
          public   DateFunction()   {  
          }  
   
          public   long   fromDateStringToLong(String   inVal)   {  
                  Date   date   =   null;  
                  SimpleDateFormat   inputFormat   =   new   SimpleDateFormat("yyyy-mm-dd   hh:ss");  
                  try   {  
                          date   =   inputFormat.parse(inVal);  
                  }   catch   (Exception   e)   {  
                          e.printStackTrace();  
                  }  
                  return   date.getTime();  
          }  
   
          public   String   fromLongToDate(long   inVal)   {  
                  SimpleDateFormat   sdf   =   new   SimpleDateFormat("yyyy-mm-dd   hh:ss");  
                  Date   currentTime   =   new   Date(inVal);  
                  return   sdf.format(currentTime);  
          }  
   
          public   static   void   main(String[]   args)   {  
      //             2005-03-28   14:50:23   -   2004-10-21   14:17:03  
                  DateFunction   df   =   new   DateFunction();  
                   
                  long   startT=df.fromDateStringToLong("2005-03-03   14:51:23");  
                  long   endT=df.fromDateStringToLong("2004-03-03   13:50:23");  
  //                 long   fin=df.fromDateStringToLong("1970-01-01   0:00");  
  //                 System.out.println(startT+"=="+endT+"=="+(startT-endT)+"=="+fin);  
                   
                  long   mint=(startT-endT)/(1000);  
                  int   hor=(int)mint/3600;  
                  int   secd=(int)mint%3600;  
                  int   day=(int)hor/24;  
                   
                  System.out.println("共"+day+"天   准确时间是:小时="+hor+"   分钟"+secd   );  
          }  
   
   
  }Top

2 楼kingfish(工作很忙,很少来csdn...)回复于 2005-03-28 17:46:42 得分 10

to   楼上:  
                        MM和mm不一样。  
   
  SimpleDateFormat   df   =   new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");  
  long   seconds   =   (df.parse(sdt1).getTime()-   df.parse(sdt2).getTime())/1000;  
  转成秒后再换算年时分秒...Top

3 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-03-30 09:32:16 得分 2

路过!顶一下!  
   
  楼上方法还可以!Top

4 楼hongyan2004(spring+hibernate)回复于 2005-04-05 19:46:40 得分 2

转成秒后再换算年时分秒Top

5 楼007JavaKing(乖乖咙的咚)回复于 2005-04-05 23:34:59 得分 5

把时间换成微秒,减一次,在换算成多少天,多少小时,多少妙。就可以了  
  用getTime()可以得到毫秒数。  
  Returns   the   number   of   milliseconds   since   January   1,   1970,   00:00:00   GMT   represented   by   this   Date   object.Top

6 楼topil(认认真真学习,塌塌实实工作)回复于 2005-04-06 16:53:14 得分 10

 
  try{  
  Date   dt1   =   new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss").parse("2005-04-11   16:47:30");  
  Date   dt2   =   new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss").parse("2005-04-11   17:47:30");  
  SimpleDateFormat   df   =   new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");  
   
  long   seconds   =   (dt1.getTime()-   dt2.getTime())/1000;         //相差的天数  
  long   date   =   seconds/(24*60*60);         //相差的天数  
  long   hour   =   (seconds-date*24*60*60)/(60*60);   //相差的小时数  
  long   minut   =   (seconds-date*24*60*60-hour*60*60)/(60);   //相差的分钟数  
  long   second   =   (seconds-date*24*60*60-hour*60*60-minut*60);   //相差的秒数  
  System.out.println(date);  
  System.out.println(hour);  
  System.out.println(minut);  
  System.out.println(second);  
  }catch(Exception   e){e.printStackTrace();}  
  Top

7 楼cuilichen(fjfjfjfj)回复于 2005-04-06 19:10:21 得分 1

除了Date外,还可以使用Cadenlar类。Top

8 楼JOBLin(阿德)回复于 2005-04-07 10:10:03 得分 10

Calendar   calendar   =   Calendar.getInstance();  
  //加减天数  
  calendar.add(Calendar.DAY_OF_MONTH,   -3   );  
  Date   Days   =   calendar.getTime();  
  //转换成年月日的形式  
  SimpleDateFormat   DateTime=new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");  
  String   sDateTime   =   DateTime.format(Days);Top

相关问题

  • 时间怎么相减?急!急!急!
  • 急!两个时间相减如何做
  • 时间相减问题!!!急,在线等!!!
  • 求两时间相减,急,谢谢!!!分不够可以再给!
  • 高分请教时间相减的问题——急
  • 时间相减的问题
  • 时间相减问题?
  • 时间类型相减
  • 时间相减,可以得到相减的秒数?
  • 关于时间相减的问题

关键词

  • date
  • simpledateformat
  • fromdatestringtolong
  • datefunction
  • startt
  • endt
  • inval
  • gettime
  • df
  • 相差

得分解答快速导航

  • 帖主:mumasgw
  • liutang2
  • kingfish
  • OnlyFor_love
  • hongyan2004
  • 007JavaKing
  • topil
  • cuilichen
  • JOBLin

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo