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