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