【转】Java按自然月计算两个日期相差的年月日
曾经我以为计算两个日期之差很简单,在给我的团队成员分配任务时,也觉得就是调用一个方法的问题,可是当我发现结果老是不对时,才发现原来JDK 提供的API中根本没有这样的方法,我也很恼火,也怪不得不少牛人在博客里怒斥Java标准库中对日期的处理晦涩不堪的现状,想这样的功能提供也是理所应当的,也就说明Date,Calendar中提供的日期处理的功能不够强大,因为已经有开源(Joda,某个知名的Java开源类库,在时间日期的处理上相比Java标准库更加强大且易用,IBM的日期类库中提供了强大的功能),各大论坛中对这个问题争论很多,可是很多都是考虑的比较简单,每个月按30天计算,可能你会说,计算的这么精确吗?答案是在一定的场合下是非常有必要的,在银行,图书馆过期图书计费,网络流量计费等,都是按照自然月来计算的,需要考虑的因素很多,而不是简单的30天,我现在需要的场合是Baby Care这款软件中,要计算Baby的年龄,就是xx years,xx months,xx days,因为很多人需要用这个看看小孩是否满月,是否周岁等,开始为了简单,我们按30天每月,后来有人反馈,计算方法不对,只好让用户选择,是每月按30天计算,还是按自然月计算。
按每月30天计算,论坛中常讨论的方法,,并且似乎也是没有问题的,但是往往计算的结果有时会相差一天:
相应代码:
false; ?
- ????}?
如果你有更好的方法,欢迎探讨:-)
本文出自 “超越梦想” 博客,请务必保留此出处http://breezy.blog.51cto.com/2400264/451353