java7與java8中計算兩個日期間隔多少年多少月多少天的實現方式


 

最近工作中碰到個新需求,計算每個員工入職公司的時長,要求形式為多少年多少月多少天形式,某個值為0就跳過不顯示,因為前段時間學習過java8新特性,對於這個需求,java8的新時間日期API可以直接解決:

不得不感嘆java8的強大,但是很遺憾,項目的服務端使用的jdk仍然是1.7(汗......java10都發布了),所以還是得自己動手來,剛開始使用的是日歷API方式,通過加減計算,得出的結果,參考了百度的答案,如下圖:

,

但是后來測試發現這種方式有很大的問題,計算的值不僅可能為0,還有可能為負數,當然是不行了,於是繼續百度,后來想到了commons組件,於是使用這個組件就輕而易舉解決了這個問題:

,

使用Apache的commons的long包下面的DurationFormatUtils工具類的formatPeriod方法,可以完美解決這個問題,然后就是返回字符了,因為考慮到各種為0不顯示的業務邏輯,所以一開始無腦的加了很多ifelse判斷,

后來果斷被項目組長鄙視,然后直接用StringBuffer來處理,不多說了.直接貼改進的代碼:

這樣處理起來就特別方便了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM