生日计算年龄
引子
對于一個,極端追求完美的程序員,寫代碼,有時候是很痛苦的。這種痛苦不是怎么實現一個需求,而是痛苦于選擇,選擇用那種方法實現,才能做到完美。
——今天,天氣悶熱,要下大雨的樣子,股票行情持續走低,大盤接近2700點。
問題描述
最近做項目有一個需求,需要通過出生日期計算年齡。當聽到這個需求,我最直觀的想法就是,出生年份與系統年份做差再加一,得到的年齡(自認為簡單粗暴,計算準確【按虛歲】)??墒钱敽推渌掠懻摰臅r候,說一般情況按照周歲計算,比較合適。正當和同事討論的時候,忽然另一同事問到,虛歲和周歲的概念是怎么定義的?我之前也只是模糊的知道,真被同事問起來,我也是懵逼的(生活中處處是學問)。
虛歲是中國傳統的計齡方式,也流行于亞洲東部其它國家,用于計算人出生后正在經歷的年份次序(序數),以剛出生時為一歲,因為這是人出生后的第一年,與已經歷過的懷孕近一年無關。按照農歷【摘自百科】
周歲,是國際通用的年齡計算方式。它計算的是出生后已經度過的時間長度(為基數,故也可以計算尾數,如三歲零兩個月,七歲半等)。按照公歷【摘自百科】。
經過以上對虛歲和周歲概念的理解我們可以得到下表(簡化按照公歷計算):
| 2017-07-07 \2018-02-02 | 2 | 0歲6個月26天 |
| 2017-07-07 \2018-08-07 | 2 | 1歲1個月 |
| 2017-07-07 \2019-07-02 | 3 | 1歲11個月26天 |
由于我們項目中的需求,對年齡為整數顯示,沒有月數和日數,最后討論,用周歲顯示,但只顯示幾周歲,月數和日數舍去,零周歲顯示一歲。
實現代碼如下:
總結:
解決問題之前,一定要搞懂所有相關概念(切記概念模糊),只有做到胸中有數,才能完美解決問題。
總結
- 上一篇: 肠炎型细小病毒斗争
- 下一篇: mvn clean package是个什