注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

java计算2个时间相差多少年,多少个月,多少天  

2012-10-31 18:39:51|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


Java代码 
  1. import  java.util.Calendar;   
  2. public  class  Y  {   
  3.    public  static  void  main(String[]  args)  {   
  4.       int  ret[]  =  getDateLength( "20050531 ""20070101 ");   
  5.       System.out.println(ret[0]  +  ": "  +  ret[1]  +  ": "  +  ret[2]);   
  6.    }   
  7.    static  int[]  getDateLength(String  fromDate, String  toDate)  {   
  8.       Calendar  c1  =  getCal(fromDate);   
  9.       Calendar  c2  =  getCal(toDate);   
  10.       int[]  p1  =  {  c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH)  };   
  11.       int[]  p2  =  {  c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH)  };   
  12.       return  new  int[]  {  p2[0]  -  p1[0], p2[0]  *  12  +  p2[1]  -  p1[0]  *  12  -  p1[1], (int)  ((c2.getTimeInMillis()  -  c1.getTimeInMillis())  /  (24  *  3600  *  1000))  };   
  13.    }   
  14.    static  Calendar  getCal(String  date)  {   
  15.       Calendar  cal  =  Calendar.getInstance();   
  16.       cal.clear();   
  17.       cal.set(Integer.parseInt(date.substring(04)), Integer.parseInt(date.substring(46))  -  1, Integer.parseInt(date.substring(68)));   
  18.       return  cal;   
  19.    }   
  20. }   

计算年的差值和天的差值比较简单。 

关键是月的差值,可以用等价的概念把年退到月,比如2007年1月,等价于2006年13月,同理等价于0年(2007*12+1)月。 
这样y1年m1月到y2年m2月  分别等价于0年(y1*12+m1)月和0年(y2*12-m2)月 
月份之差就是:y2*12+m2-y1*12-m1
  评论这张
 
阅读(588)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016