生日轉(zhuǎn)年齡

思路

  1. 獲取Date類型的生日,之后轉(zhuǎn)換成毫秒,再把當(dāng)前的毫秒數(shù)相減就可以獲得到用戶活了多少毫秒,再把毫秒轉(zhuǎn)換成天轉(zhuǎn)換成年即可,可能需要處理一下閏年的情況
  2. 獲取Date類型的生日,轉(zhuǎn)換成Calendar,把當(dāng)前時(shí)間也轉(zhuǎn)成Calendar之后獲取兩者Calendar.YEAR,兩者相減,之后判斷生日的Calendar.DAY_OF_YEAR是否大于當(dāng)前時(shí)間,如果大于說(shuō)明還沒有到今年的生日,剛剛算出來(lái)的年齡要減一

實(shí)現(xiàn)

1.轉(zhuǎn)換毫秒(沒有處理閏年的)

        String dateStr = "1999-1-1";
        Date date = Date.valueOf(dateStr);
        Date now = new Date(System.currentTimeMillis());
        //相差天數(shù)
        int day = (int)((now.getTime()-date.getTime()) / (1000 * 60 * 60 * 24));
        System.out.println("年齡=" + (day / 365));

2.使用Calendar

        String dateStr = "1999-1-1"; //生日
        Date date = Date.valueOf(dateStr);
        Calendar now = Calendar.getInstance();
        Calendar birth = Calendar.getInstance();
        birth.setTime(date);
        int age = 0;
        if(birth.after(now)) {
            //當(dāng)生日在當(dāng)前時(shí)間的前面的時(shí)候->這是不可能的
        } else {
            age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
            if(now.get(Calendar.DAY_OF_YEAR) < birth.get(Calendar.DAY_OF_YEAR)) {
                age -= 1;
            }
        }
        System.out.println("年齡=" + age);

個(gè)人比較推薦第二種方法,比較直接而且日期計(jì)算一般都不直接用Date相關(guān)的方法的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • import java.text.SimpleDateFormat;import java.util.Calend...
    霙愔閱讀 766評(píng)論 0 2
  • SwiftDate概況 從Swift發(fā)布起,我們就沒有放棄使用Swift。 當(dāng)然,我們希望在項(xiàng)目能夠輕松自如地管理...
    Mee_Leo閱讀 10,212評(píng)論 1 13
  • 第05天API 今日內(nèi)容介紹 ·Object類& System類 ·日期相關(guān)類 ·包裝類&正則表達(dá)式 ·Date對(duì)...
    chcvn閱讀 427評(píng)論 0 1
  • add: init: update:
    ShawnDu閱讀 195評(píng)論 0 1
  • 等人這件事,總讓人煩心。 北京不靠譜的交通,讓每一次聚會(huì)都雪上加霜。每一場(chǎng)同學(xué)會(huì)上,都有人姍姍來(lái)遲,來(lái)上一句,不好...
    Jenny喬閱讀 458評(píng)論 1 8